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
相关产品推荐
相关产品推荐

