使用谷歌云源代码存储库与服务帐户



是否有可能以自动方式访问谷歌云源存储库,即从使用服务帐户的GCE实例?

我在文档中看到的唯一身份验证方法是使用gcloud auth login命令,它将验证我的个人用户访问repo,而不是我正在运行命令的机器。

如果您想使用git而不是通过gcloud进行克隆,您可以运行:

git config --global credential.helper gcloud.sh

…然后这个就可以了:

git clone https://source.developers.google.com/p/$PROJECT/r/$REPO

运行GCE虚拟机

gcloud source repos clone default ~/my_repo

应该自动工作,不需要额外的认证步骤,因为它将使用vm的服务帐户。

如果您在其他机器上运行,您可以从https://console.cloud.google.com下载服务帐户。json密钥文件并使用

激活它
gcloud auth activate-service-account --key-file KEY_FILE

如果像我这样的人试图这样做作为Dockerfile的一部分,在挣扎了一段时间后,我只设法让它像这样工作:

RUN gcloud auth activate-service-account --key-file KEY_FILE ; 
    gcloud source repos clone default ~/my_repo

正如您所看到的,将它作为同一个RUN命令的一部分是关键,否则

将继续失败。
ERROR: (gcloud.source.repos.clone) You do not currently have an active account selected.
  1. 为实例启用对"云源存储库"云API的访问。您应该在管理控制台
  2. 中创建或编辑实例时执行此操作。
  3. 从实例内的shell执行gcloud source repos clone <repo_name_in_cloud_source> <target_path_to_clone_into>

如果您在GCE上运行,请利用需要更少代码行的新身份验证方法。

创建VM实例时,在"Access &将"云平台"设置为"已启用"。

那么验证码就这么简单:

from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
http = credentials.authorize(httplib2.Http())

看到https://developers.google.com/identity/protocols/application-default-credentials

相关内容

  • 没有找到相关文章

最新更新