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

GitLab CI中$CI_ENVIRONMENT_SLUG变量为空问题求助

问题根源分析

其实这个问题我之前帮不少人解决过——核心原因是GitLab CI的环境变量有作用域限制:CI_ENVIRONMENT_SLUG以及其他CI_ENVIRONMENT_*前缀的变量,属于环境专属变量。只有当你的job明确通过environment配置项关联到某个具体的部署环境时,GitLab才会自动为这个job注入这些变量。

你的部署阶段job肯定配置了environment字段,所以能拿到有效值;但Tests阶段的job没有这个配置,自然就无法获取到CI_ENVIRONMENT_SLUG,输出为空也就不奇怪了。

两种可行解决方案

方案一:给Tests job绑定对应环境

如果你的测试是专门针对某个部署后的环境运行的,最直接的办法就是给Tests job加上environment配置,和部署阶段的环境保持一致。这样GitLab会自动把对应环境的CI_ENVIRONMENT_SLUG注入进来:

Tests:
  image: maven:3.5.0-jdk-8
  stage: Tests and static code checks
  # 新增environment配置,和部署阶段的环境名称匹配
  environment:
    name: your-deployment-environment-name # 替换成你部署阶段用的环境名
    url: http://$CI_ENVIRONMENT_SLUG-publish.test.com # 可选,也可以在这里定义环境访问URL
  variables:
    QA_PUBLISH_URL: http://$CI_ENVIRONMENT_SLUG-publish.test.com
  script:
    - echo $QA_PUBLISH_URL
    - echo $CI_ENVIRONMENT_SLUG # 现在应该能输出有效值了
    - mvn clean -D...

方案二:通过Artifacts传递变量

如果你的Tests job是通用测试,不需要绑定到特定环境,但需要复用部署阶段的CI_ENVIRONMENT_SLUG,可以在部署阶段把变量保存到文件,通过artifacts传递给Tests阶段:

第一步:修改部署阶段job,保存变量到文件

Deploy:
  stage: deploy
  environment:
    name: your-deployment-environment-name
  script:
    # 把环境变量写入文件
    - echo "CI_ENVIRONMENT_SLUG=$CI_ENVIRONMENT_SLUG" > environment_vars.txt
  # 把文件作为artifacts上传,供后续阶段使用
  artifacts:
    paths:
      - environment_vars.txt

第二步:修改Tests阶段job,加载传递的变量

Tests:
  image: maven:3.5.0-jdk-8
  stage: Tests and static code checks
  # 依赖部署阶段的artifacts,确保能拿到environment_vars.txt
  dependencies:
    - Deploy
  script:
    # 加载文件里的变量
    - source environment_vars.txt
    # 定义QA_PUBLISH_URL(也可以直接在script里用变量)
    - export QA_PUBLISH_URL=http://$CI_ENVIRONMENT_SLUG-publish.test.com
    - echo $QA_PUBLISH_URL
    - echo $CI_ENVIRONMENT_SLUG
    - mvn clean -D...
额外提示

如果部署和测试不在同一个pipeline里,方案二的artifacts就没法复用了。这时候可以考虑:

  • 在GitLab项目的Settings > CI/CD > Variables里手动设置一个环境变量,比如DEPLOY_ENV_SLUG,然后在两个阶段都用这个变量
  • 或者用GitLab API把部署阶段的变量存储到项目变量中,但这种方式相对复杂,一般不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:00:00