You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GCP Cloud Build使用Secret Manager密钥时环境变量替换异常

问题诱因

Cloud Build 中对$$标识的机密变量的解析替换逻辑,仅会在 bash 的-c参数后的命令字符串中生效。你在第二步直接将$$USERNAME、$$PASSWORD作为独立参数传给脚本时,Cloud Build 不会对这类非-c包裹的参数做变量替换,最终传到脚本里的是$USERNAME、$PASSWORD的字面量字符串,而非实际的机密值。
另外你首次 docker login 报错还有一个配置问题:你查询SECRET1的输出值为Secret2Value,和SECRET2值相同,说明你可能把密码存错到了对应Secret条目中,或者调用的版本不对,也会导致账号校验失败。

修复方案

两种方案二选一即可:

方案1:用-c包裹脚本调用

让脚本调用逻辑放在-c的命令字符串中,触发Cloud Build的变量替换逻辑,修改第二步配置如下:

- name: 'gcr.io/cloud-builders/docker'
  entrypoint: 'bash'
  args: ['-c', 'cloudbuilds/script.sh $$USERNAME $$PASSWORD']
  secretEnv: ['USERNAME', 'PASSWORD']

方案2:脚本直接读取环境变量(更推荐)

secretEnv配置已经将机密注入到当前步骤的bash全局环境中,不需要作为参数传递,直接在脚本中读取即可:

修改yaml第二步配置:

- name: 'gcr.io/cloud-builders/docker'
  entrypoint: 'bash'
  args: ['cloudbuilds/script.sh']
  secretEnv: ['USERNAME', 'PASSWORD']

修改script.sh内容:

#!/bin/bash
secretVar1="$USERNAME"
secretVar2="$PASSWORD"
printf "\n\nVARIABLES\nSecret1: $secretVar1\nSecret2: $secretVar2\n\n"

配置修改完成后,确认Secret Manager中SECRET1、SECRET2存储的是正确的docker用户名、密码对应的值即可正常运行。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 08:54:02