无法将Bitbucket Pipelines变量传递至CloudFormation模板
解决Bitbucket构建变量传递到CloudFormation参数的问题
问题根源在于你直接用cat ./parameters.json读取的是静态文本,Shell不会自动解析文件内容里的环境变量,所以$BITBUCKET_BUILD_NUMBER始终是原字符串,没被替换。
给你两种可行的解决方法:
方法一:用envsubst替换JSON中的变量
- 确保流水线使用的镜像包含
envsubst工具(默认镜像如果没有,可先安装:比如Alpine镜像执行apk add gettext,Debian/Ubuntu执行apt-get install -y gettext) - 修改
bitbucket-pipelines.yml里的参数赋值命令:
- export PARAMETERS=$(envsubst < ./parameters.json)
这条命令会读取parameters.json的内容,自动把其中的环境变量替换成实际值,再赋值给PARAMETERS。
方法二:直接在流水线中构造参数字符串
不需要依赖JSON文件,直接在Shell里拼接参数内容:
- export PARAMETERS='[{"ParameterKey": "BuildTag", "ParameterValue": "'"$BITBUCKET_BUILD_NUMBER"'"}]'
Shell会直接把$BITBUCKET_BUILD_NUMBER替换为实际构建编号,生成符合格式的参数JSON字符串。
验证步骤
可以在赋值命令后加一行echo $PARAMETERS,查看输出内容是否已经把变量替换成了实际的构建编号,确认无误后再执行CloudFormation部署。
内容的提问来源于stack exchange,提问作者Forest1234
相关产品推荐
相关产品推荐

