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

GitLab CI跨Job传环境变量失败:无法上传dotenv制品

问题原因及解决办法

核心原因:生成的build.env路径与制品配置不匹配

你的apply.sh脚本里执行了cd terraform,之后的echo "API_INVOKE_URL=$API_INVOKE_URL" >> build.env是在terraform子目录下创建的build.env,但你在artifacts里配置的路径是项目根目录的$CI_PROJECT_DIR/build.env,GitLab CI找不到对应路径的文件,所以报错。

解决办法(任选其一即可)

方法1:修改脚本,直接写到项目根目录的build.env

在apply.sh里把echo的路径改成绝对路径:

export API_INVOKE_URL=$(terraform output -raw api_invoke_url)
# 用CI_PROJECT_DIR变量指定根目录路径
echo "API_INVOKE_URL=$API_INVOKE_URL" >> $CI_PROJECT_DIR/build.env

这种方式最可靠,不受当前工作目录影响。

方法2:修改制品配置,指向terraform子目录的文件

调整build-code的artifacts路径:

build-code:
  extends: .base
  stage: build
  script: . ./terraform/apply.sh
  artifacts:
    reports:
      dotenv: terraform/build.env # 改为terraform下的文件路径

额外验证步骤

可以在apply.sh的echo之后加一行验证命令,确认文件生成:

# 如果用方法1,验证根目录下的文件
cat $CI_PROJECT_DIR/build.env
# 如果用方法2,验证terraform目录下的文件
cat build.env

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 09:05:00