gcloud命令行客户端 - 并行处理多个gCloud项目

时间:2017-03-21 06:57:37

标签: google-cloud-platform gcloud

我们正在使用Jenkins构建数据并将数据推送到Google云端存储。

我们有一台构建机器;和多个不同的Google项目(测试;制作)

如果'jenkins'用户在1个构建节点上进行了并行构建;有没有办法将参数传递给gcloud docker -- push,以便单独的凭据验证一次推送到testing Google项目,另一次推送到production项目?

1 个答案:

答案 0 :(得分:5)

从Cloud SDK的角度来看,这里有一些选项。

第一个是使用不同的配置目录。默认情况下,Cloud SDK使用~/.config/gcloud作为其配置目录; $CLOUDSDK_CONFIG环境变量会覆盖此变量。如果您使用不同的配置目录,它实际上与具有两个不同的安装相同,并且您不会冒任何风险。竞争条件。

第二个是使用named configurations。这可能是最容易用一个例子说明的:

$ gcloud config configurations create foo  # creates and activates a new configuration
$ gcloud auth login  # you may want to use `activate-service-account` for non-interactive use
$ gcloud config set project foo-project
$ gcloud config configurations create bar
$ gcloud auth login
$ gcloud config set project bar-project
$ CLOUDSDK_ACTIVE_CONFIG_NAME=foo gcloud version &
$ CLOUDSDK_ACTIVE_CONFIG_NAME=bar gcloud version &

如果您只想更改配置属性,可以通过环境变量$CLOUDSDK_<SECTION>_<PROPERTY>进行更改。例如,$CLOUDSDK_CORE_ACCOUNT$CLOUDSDK_CORE_PROJECT。对于某些常见标志,您可以在每个gcloud命令上设置它们:例如--project--account。有关这些常见标志的概述,请参阅gcloud help

也就是说,对于gcloud docker,您可能会在任何这些情况下遇到问题,因为docker共享一个配置文件。您最好的选择可能是docker-credential-gcr使用不同的$GOOGLE_APPLICATION_CREDENTIALS文件。