有三个阶段 - .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
每天标记到only
运行test
阶段不是首选。
还有其他想法吗?
答案 0 :(得分:15)
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
答案 1 :(得分:12)
目前没有办法根据环境变量运行作业(您始终可以打开功能请求!)。但是,如果环境变量不存在,您可以使用简单的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
如果变量不存在,则跟随它的测试将不会运行。否则,他们会。
希望有所帮助!
答案 2 :(得分:5)
如果有人现在正在寻找这个,gitlab现在已经实现了一个带有可变覆盖的预定构建功能(非常方便)。找到文档here。
对于任何对此功能的说明感兴趣的人,在给出这个答案的时候,请点击这里:
使用管道排程
为了安排管道:
我最喜欢的功能是预定的管道变量。
可以找到变量文档here,但对我来说最有用的信息是优先级,我将在此处重新输入:
变量优先级
变量可以被覆盖,并且它们按此顺序优先于彼此:
希望这会有所帮助。我很高兴他们添加了这个功能。
答案 3 :(得分:0)
在项目的左框架中选择CI / CD->时间表:
创建新时间表:
添加您的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"
答案 4 :(得分:-2)
我刚刚按照找到的here示例实现了这个“功能” 使用crontab和curl(我使用Linux,因为为什么不呢?)来设置触发器来运行你的夜间测试。
30 0 * * * curl --request POST --form token=TOKEN --form ref=master https://gitlab.example.com/api/v3/projects/9/trigger/builds