是否有可能以自动方式访问谷歌云源存储库,即从使用服务帐户的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.
- 为实例启用对"云源存储库"云API的访问。您应该在管理控制台 中创建或编辑实例时执行此操作。
- 从实例内的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