如何使用gitlab-ci.yml文件中的变量

问题描述 投票:0回答:2

我正在尝试在 gitlab-ci.yml 文件中使用变量。该变量作为参数传递给批处理文件,该批处理文件要么仅构建,要么根据传入的参数构建和部署。我尝试了许多不同的方法将变量传递到批处理文件中,但每次变量都会被处理更多就像静态字符串一样。

我已经阅读了有关变量的 gitlabs 文档,但似乎无法使其工作。

  - build  

variables:
  BUILD_PUBLISH_CONFIG_FALSE: 0
  BUILD_PUBLISH_CONFIG_TRUE: 1

# BUILD ===============================
build: &build
    stage: build  
    tags: 
      - webdev  
    script:       
      - ./build.bat %BUILD_CONFIG%

build:branch:
  <<: *build
  variables:
    BUILD_CONFIG: $BUILD_PUBLISH_CONFIG_FALSE
  only:
    - /^(feature|hotfix|release)\/.+$/

build:branch:
  <<: *build
  variables:
    BUILD_CONFIG: $BUILD_PUBLISH_CONFIG_TRUE
  only:
    - /^(stage)\/.+$/

build:branch:
  <<: *build
  variables:
    BUILD_CONFIG: $BUILD_PUBLISH_CONFIG_TRUE
  only:
    - /^(master)\/.+$/

当观看 gitlab 的 ci 脚本执行时,我期望 ./build.bat 0 或 ./build.bat 1。 每次都会打印为 ./build.bat %BUILD_CONFIG%

bash variables gitlab gitlab-ci gitlab-ci-runner
2个回答
1
投票

当您将变量放入作业中时,这意味着您想要创建新变量(这不是正确的方法)。您想在顶部输出变量设置的内容吗?你可以将其添加到 echo 中吗?或者类似的东西? 我不明白你想要达到的目标。

https://docs.gitlab.com/ee/ci/variables/#gitlab-ciyml-defined-variables


0
投票

我想您只需要定义一个通用作业,其参数在派生作业中定义。对于该问题,提交的脚本相当复杂。 下面的这个示例工作正常,使用隐藏作业并扩展。在派生作业中设置为变量的值适用于通用脚本:

.unittests: # hidden job extended below - unit test and coverage
  stage: test
  variables:
    UNITTEST_OUTPUT: 'D00_DATA/D04_RESULTS'
  script:
    - echo "Launching unittest ..."
    - python3 -m xmlrunner discover -s $UNITTEST_PATH --output-file $UNITTEST_OUTPUT/$TEST_OUTPUT_FILE_NAME

data_tests:
  extends: .unittests
  variables:
    UNITTEST_PATH: 'D01_DATA_ENG'
    TEST_OUTPUT_FILE_NAME: 'TEST-D01_DATA_ENG.xml'

model_tests:
  extends: .unittests
  variables:
    UNITTEST_PATH: 'D02_MODEL_ENG'
    TEST_OUTPUT_FILE_NAME: 'TEST-D02_MODEL_ENG.xml'
© www.soinside.com 2019 - 2024. All rights reserved.