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

gcloud command line client - working on multiple gCloud projects in parallel

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

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

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

从 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 文件一起使用。