是否可以以自动方式访问Google Cloud Source Repository ,即使用服务帐户从 GCE 实例访问?
我在文档中看到的唯一身份验证方法是使用gcloud auth login
命令,它将验证我的个人用户以访问 repo,而不是我正在运行命令的机器。
是否可以以自动方式访问Google Cloud Source Repository ,即使用服务帐户从 GCE 实例访问?
我在文档中看到的唯一身份验证方法是使用gcloud auth login
命令,它将验证我的个人用户以访问 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
然后运行上面的克隆命令。
如果你想用 克隆git
而不是通过 运行gcloud
,你可以运行:
git config --global credential.helper gcloud.sh
...然后这将起作用:
git clone https://source.developers.google.com/p/$PROJECT/r/$REPO
万一像我这样的人试图将其作为 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.
gcloud source repos clone <repo_name_in_cloud_source> <target_path_to_clone_into>
如果您在 GCE 上运行,请利用需要更少代码行的新身份验证方法。
创建 VM 实例时,在“访问和安全”下,将“云平台”设置为“启用”。
那么验证码就是这么简单:
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
http = credentials.authorize(httplib2.Http())
请参阅 https://developers.google.com/identity/protocols/application-default-credentials