dee*_*ive 22 git gitlab gitlab-ci
有3个阶段 - 构建,测试和部署.gitlab-ci.yml.
需要运行夜间回归测试阶段 - 好nightly:)
这是相关的.gitlab-ci.yml代码:
stages:
- build
- test
- deploy
build_project:
stage: build
script:
- cd ./some-dir
- build-script.sh
except:
- tags
#Run this only when say variable 'NIGHTLY_TEST == True'. But HOW?
nightly_regression_test_project:
stage: test
script:
- cd ./some-dir
- execute test-script
Run Code Online (Sandbox Code Playgroud)
每天标记到only运行test阶段是不可取的.
还有其他想法吗?
And*_*ann 23
except并only可以指定将触发它们的变量.
您可以在.gitlab-ci.yml中使用以下内容:
build1:
stage: build
script:
- echo "Only when NIGHTLY_TEST is false"
except:
variables:
- $NIGHTLY_TEST
test1:
stage: test
script:
- echo "Only when NIGHTLY_TEST is true"
only:
variables:
- $NIGHTLY_TEST
Run Code Online (Sandbox Code Playgroud)
Con*_*hea 14
目前没有办法根据环境变量运行作业(您始终可以打开功能请求!).但是,如果环境变量不存在,您可以使用简单的Bash命令立即退出.
就像是:
stages:
- build
- test
- deploy
build_project:
stage: build
script:
- cd ./some-dir
- build-script.sh
except:
- tags
# Run this only when NIGHTLY_TEST environment variable exists.
nightly_regression_test_project:
stage: test
script:
- [ -z "$NIGHTLY_TEST" ] && exit 1;
- cd ./some-dir
- execute test-script
Run Code Online (Sandbox Code Playgroud)
如果变量不存在,则跟随它的测试将不会运行.否则,他们会.
希望有所帮助!
如果有人现在正在寻找这个,gitlab现在已经实现了具有可变覆盖功能的计划构建功能(非常方便)。在此处找到文档。
对于在给出此答案后对此功能的说明感兴趣的任何人,请按以下步骤进行:
使用管道时间表
为了调度管道:
我最喜欢的功能是计划的管道变量。
变量文档可以在这里找到,但是对我来说最有用的信息是优先级,我将在这里重新输入:
变量优先级
变量可以被覆盖,并且它们按此顺序相互优先:
希望这可以帮助。我很高兴他们添加了此功能。
在项目的左侧框架中选择 CI/CD -> Schedules:
创建一个新的时间表:
添加您的NIGHTLY_TEST变量并将其设置为True:
only将和部分添加variables到您的gitlab-ci.yml文件中:
nightly_regression_test_project:
stage: test
script:
- cd ./some-dir
- execute test-script
only:
variables:
- $NIGHTLY_TEST == "True"
Run Code Online (Sandbox Code Playgroud)
-- 更新 -- 使用基于新规则的逻辑,您可以这样做:
nightly_regression_test_project:
stage: test
script:
- cd ./some-dir
- execute test-script
rules:
- if: $NIGHTLY_TEST == "True"
when: always
Run Code Online (Sandbox Code Playgroud)