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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 22:46:03