GitLab CI多阶段传递多个变量失败问题求助
解决GitLab CI阶段间传递变量的问题
你的问题核心在于**plan.env的格式不符合shell变量定义规则**,以及apply阶段未正确加载变量文件,具体修正方案如下:
1. 修正plan阶段的变量写入格式
你当前仅将变量值直接写入plan.env,文件内容是两行纯字符串,没有KEY=VALUE的标准变量定义格式,导致后续无法通过source命令识别加载。修改plan阶段的脚本,将变量以键值对形式写入:
plan: stage: plan before_script: - *terraform-init script: - export var1="var1_value" - export var2="var2_value" # 以KEY=VALUE格式写入env文件,确保shell可解析 - echo "var1=\"$var1\"" >> plan.env - echo "var2=\"$var2\"" >> plan.env - terraform -chdir=terraform plan -out $PLAN artifacts: paths: - terraform/$PLAN - plan.env
2. 在apply阶段正确加载变量文件
在apply阶段的脚本开头添加source plan.env命令,加载从plan阶段传递来的变量文件后,再使用变量:
apply: stage: apply before_script: - *terraform-init script: # 加载变量文件 - source plan.env - echo $var1 - echo $var2 - terraform -chdir=terraform apply -input=false -lock=false -auto-approve $PLAN dependencies: - plan when: manual
额外提示
- 如果变量值包含特殊字符,必须用双引号包裹,避免shell解析错误
- 也可以用
export var1="value"的格式写入plan.env,source后变量会自动成为环境变量,效果一致 - 可在plan阶段添加
cat plan.env命令,验证生成的文件格式是否正确
内容的提问来源于stack exchange,提问作者khaled lhale
相关产品推荐
相关产品推荐

