2017-03-21 60 views
0

我们使用Jenkins构建数据并将其推送到Google云端存储。gcloud命令行客户端 - 并行处理多个gCloud项目

我们有一台生成机器;和多个不同的Google项目(测试;生产)

如果在1个构建节点上由'jenkins'用户完成并行构建,有什么方法可以将参数传递到gcloud docker -- push,这样单独的凭证就可以验证一次推送到Google项目的testing,另一个到production项目吗?

回答

4

从云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文件。