我正在 GCB 上进行构建,我需要在其中安装私有依赖项,因此我正在使用 Google Secrets Manager。我的 cloudbuild.yaml 看起来像这样:
steps:
- name: gcr.io/cloud-builders/gcloud
entrypoint: 'bash'
args: [ '-c', "gcloud secrets versions access latest --secret=PERSONAL_ACCESS_TOKEN_GITHUB --format='get(payload.data)' | tr '_-' '/+' | base64 -d > decrypted-pat.txt" ]
- name: 'gcr.io/cloud-builders/docker'
args:
- build
- '--build-arg'
- PERSONAL_ACCESS_TOKEN_GITHUB=$(cat decrypted-pat.txt)
- '-t'
- 'gcr.io/$PROJECT_ID/$REPO_NAME:$TAG_NAME'
- .
images: [ gcr.io/$PROJECT_ID/$REPO_NAME:$TAG_NAME ]
但是,$(cat decrypted-pat.txt)
没有得到评估。插入:RUN echo https://${PERSONAL_ACCESS_TOKEN_GITHUB}@github.com
到我的 dockerfile 中只是简单地回显了文字:当然,
https://$(cat decrypted-pat.txt)@github.com
这不是我正在寻找的命令(是的,如果我得到实际成功回显的东西,我将旋转令牌)。
gcb / secrets 文档中有一条注释
要在环境变量中使用密钥,您需要在变量名称前加上下划线“_”并使用 '(' 转义值。例如:_VARIABLE_NAME=$(cat password.txt) && echo -n )_VARIABLE_NAME。
但这对我在构建参数中使用没有多大意义。
如何将这个秘密的实际值作为构建参数放入容器中?