我想在云构建步骤中使用 Secret Manager 将凭证存储到我们的工件。我让它使用类似于以下的构建工作:
steps:
- name: 'busybox:glibc'
entrypoint: 'sh'
args: ['-c', 'env']
secretEnv: ['SECRET_VALUE']
availableSecrets:
secretManager:
- versionName: "projects/PROJECT_ID/secrets/TEST-SECRET/versions/1"
env: 'SECRET_VALUE'
一切都很好,没有问题 - 然后我尝试稍微改进它:
steps:
- name: 'busybox:glibc'
entrypoint: 'sh'
args: ['-c', 'env']
secretEnv: ['SECRET_VALUE']
availableSecrets:
secretManager:
- versionName: "projects/$PROJECT_ID/secrets/TEST-SECRET/versions/1"
env: 'SECRET_VALUE'
但随后它抛出错误:
ERROR: (gcloud.builds.submit) INVALID_ARGUMENT: failed to get secret name from secret version "projects/$PROJECT_ID/secrets/TEST-SECRET/versions/1"
我已经能够添加一个 TRIGGER 级别的环境变量(SECRET_MANAGER_PROJECT_ID),并且效果很好。唯一的问题是触发环境,它在重建时不可用,这会破坏很多东西。
有谁知道如何在不使用触发器参数的情况下从 CloudBuild 中获取 Secret Manager 的 PROJECT_ID?