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

GitLab CI:dotenv artifacts无法传递PACKAGE_NAME变量的原因排查

问题分析与解决方案

核心原因

你的GitLab CI配置中,artifacts.reports.dotenv字段重复定义,导致只有最后一个指定的文件(version.env)会被作为dotenv报告生效,前面的dotenv.env和package.env被覆盖,因此PACKAGE_NAME无法自动导入到job2的环境中。

YAML语法规则中,同一映射下的重复键会被后续的键覆盖,你的原配置:

artifacts:
  reports:
    dotenv: dotenv.env
    dotenv: package.env
    dotenv: version.env

实际等效于仅保留最后一个定义:

artifacts:
  reports:
    dotenv: version.env

这就解释了为什么VERSION能正常传递,而PACKAGE_NAME因未被纳入dotenv报告而丢失。

修复步骤

将dotenv字段改为数组形式,包含所有需要传递的环境变量文件:

job1:
  # ... 其他配置不变
  artifacts:
    reports:
      dotenv:
        - dotenv.env
        - package.env
        - version.env
    paths:
      - dotenv.env
      - package.env
      - version.env

修改后GitLab会将三个文件中的变量全部导入到依赖job的环境中。

额外验证建议

  1. 在job1的after_script中添加cat package.env命令,确认文件内容为PACKAGE_NAME=nameexample,排除变量生成过程中的错误。
  2. 确保job2的needs配置完整引用job1的artifacts(显式声明更清晰):
    needs:
      - job: job1
        artifacts: true
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:54:52