我正在尝试在 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%
当您将变量放入作业中时,这意味着您想要创建新变量(这不是正确的方法)。您想在顶部输出变量设置的内容吗?你可以将其添加到 echo 中吗?或者类似的东西? 我不明白你想要达到的目标。
https://docs.gitlab.com/ee/ci/variables/#gitlab-ciyml-defined-variables
我想您只需要定义一个通用作业,其参数在派生作业中定义。对于该问题,提交的脚本相当复杂。 下面的这个示例工作正常,使用隐藏作业并扩展。在派生作业中设置为变量的值适用于通用脚本:
.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'