Gitlab CI $CI_ENVIRONMENT_SLUG 为空

Tim*_*lbe 5 scope environment-variables gitlab-ci


我想使用将$CI_ENVIRONMENT_SLUG我们的 Selenium 测试指向正确的动态环境,但该变量为空。

部署阶段它有一个正确的值,我不明白为什么该变量在每个阶段都不可用。cmdecho打印一个空行。

Tests:
  image: maven:3.5.0-jdk-8
  stage: Tests and static code checks
  variables:
    QA_PUBLISH_URL: http://$CI_ENVIRONMENT_SLUG-publish.test.com
  script:
      - echo $QA_PUBLISH_URL
      - echo $CI_ENVIRONMENT_SLUG    # empty
      - mvn clean -Dmaven.repo.local=../../.m2/repository -B -s ../../settings.xml -P testrunner install -DExecutionID="FF_LARGE_WINDOWS10" -DRunMode="desktopLocal" -DSeleniumServerURL="https://$QA_ZALENIUM_USER:$QA_ZALENIUM_PASS@zalenium.test.com/wd/hub" -Dcucumber.options="--tags @sanity" -DJenkinsEnv="test.com" -DSeleniumSauce="No" -DBaseUrl=$QA_PUBLISH_URL
Run Code Online (Sandbox Code Playgroud)

Dan*_*nny 5

CI_ENVIRONMENT_SLUG仅在已设置环境的审核 JOB 中可用。

目前(11.2)无法将变量从一个作业移动到另一个作业,尽管您可以:

echo -e -n "$CI_ENVIRONMENT_SLUG" > ci_environment_slug.txt
Run Code Online (Sandbox Code Playgroud)

在审核 JOB 中并将文件添加到工件中:

artifacts:
  paths:
  - ci_environment_slug.txt
Run Code Online (Sandbox Code Playgroud)

在你的Tests工作中,使用

before_script:
- export CI_ENVIRONMENT_SLUG=$(cat ci_environment_slug.txt)
Run Code Online (Sandbox Code Playgroud)

  • 同时有一个更好的方法来做到这一点:https://docs.gitlab.com/ee/ci/variables/index.html#pass-an-environment-variable-to-another-job (2认同)