如何将服务帐户动态传递给 Cloud Build 配置?

How to dynamically pass service account to Cloud Build config?

我试图在 Cloud Build 配置中参数化服务帐户:

steps:
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    args: [ 'gcloud', '--help']
substitutions:
  _SERVICE_ACCOUNT: my-service-account@developer.gserviceaccount.com
serviceAccount: 'projects/$PROJECT_ID/serviceAccounts/${_SERVICE_ACCOUNT}'
options:
  logging: CLOUD_LOGGING_ONLY

但是这个 returns 错误:

ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: could not parse service account URL

所以,我猜,服务帐户字段不支持自定义替换。 如果是这种情况,使用不同服务帐户重用云构建配置的推荐方法是什么?

从我对云构建的深刻理解,它不能工作。

想想架构。当您启动 Cloud Build 实例时,您必须加载所有 Google 云标准上下文,例如元数据服务器。元数据服务器提供凭据,实例启动时必须知道它。

替换变量在运行时解释,所以在实例启动后。


因此,您无法在实例启动之前使用替代变量解释服务帐户电子邮件,只能在实例启动之后。但是之后,在元数据服务器中加载正确的服务帐户为时已晚。