我们正在使用Jenkins构建数据并将数据推送到Google云端存储。
我们有一台构建机器;和多个不同的Google项目(测试;制作)
如果'jenkins'用户在1个构建节点上进行了并行构建;有没有办法将参数传递给gcloud docker -- push
,以便单独的凭据验证一次推送到testing
Google项目,另一次推送到production
项目?
答案 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
文件。