我gsutil rsync
在我的 Jenkins 实例中使用将代码部署到作曲家,我希望能够将代码部署到不同的项目(生产、登台、开发......)。使用时gcloud
,我唯一需要做的就是提供--account
参数以选择允许 Jenkins 执行此操作但似乎gsutils
仅适用于配置文件的服务帐户,并且当多个作业同时运行时会产生竞争条件,因为它都将取决于gcloud config
.
有没有办法指定 Google Cloud 必须使用哪个帐户gsutil
?
我gsutil rsync
在我的 Jenkins 实例中使用将代码部署到作曲家,我希望能够将代码部署到不同的项目(生产、登台、开发......)。使用时gcloud
,我唯一需要做的就是提供--account
参数以选择允许 Jenkins 执行此操作但似乎gsutils
仅适用于配置文件的服务帐户,并且当多个作业同时运行时会产生竞争条件,因为它都将取决于gcloud config
.
有没有办法指定 Google Cloud 必须使用哪个帐户gsutil
?
首先,请注意,如果您使用与 gcloud 捆绑的 gsutil 安装,gcloud 会将其当前活动的凭据传递给 gsutil。如果您想避免这种情况并使用多个不同的凭据/帐户进行重叠调用,您应该通过 gsutil 直接管理凭据(使用单独的 boto 配置文件),而不是 gcloud。您可以通过 running 禁用 gcloud 的自动凭据传递行为gcloud config set pass_credentials_to_gsutil false
。
默认情况下,单独的 gsutil 安装将全部写入相同的状态目录 ( $HOME/.gsutil
),并加载相同的默认 boto 配置文件。state_dir
为了避免竞争条件,您可以(并且应该)使用相同的 gsutil 安装,但为可能重叠的调用指定不同的和/或 boto 配置文件。这可以在 boto 配置文件级别设置,也可以使用-o
选项设置,例如gsutil -o "GSUtil:state_dir=$HOME/.gsutil2" cp src dst
. 您将在此处找到有关它的更多信息。
您可以使用它gsutil config -e
来传递服务帐户凭据。
希望这可以帮助。