1、allow_failure
作用
顾名思义,允许失败,job内使用
示例
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "build ok"
test_job1:
stage: test
script:
- echo "test1 ok"
build_job2:
stage: test
script:
- echo "test2 ok
allow_failure: true
deploy_job:
stage: deploy
script:
- echo "deploy ok"
效果
配置了allow_failure为true后及时当前job失败,也不会导致整个流水线失败
2、when
作用
用于配置job运行的条件,默认为on_success,即前一个job成功了再执行本job。其它还有如下:
- on_success(默认):仅当早期阶段的所有作业都成功或具有 allow_failure: true 时才运行作业。
- manual:仅在手动触发时运行作业。
- always:无论早期阶段的作业状态如何,都运行作业。
- on_failure:只有在早期阶段至少有一个作业失败时才运行作业。
- delayed:作业的执行延迟指定的持续时间。
- never:不要运行作业。只能在 rules 部分或 workflow: rules 中使用。
示例1: manual
如线上的应用希望自动构建和测试,但发布由人工控制
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "build ok"
test_job:
stage: test
script:
- echo "test ok"
deploy_job:
stage: deploy
script:
- echo "deploy ok"
when: manual
效果
deploy的job需要手动点击才能执行
示例2: on_failure
有这样一个场景,流水线执行失败通知到钉钉,执行成功不通知
stages:
- build
- test
- deploy
- send_message
build_job:
stage: build
script:
- echo "build ok"
test_job:
stage: test
script:
- echo "test ok"
deploy_job:
stage: deploy
script:
- echo "deploy ok"
send_2_dingtalk:
stage: send_message
script:
- echo "pipeline fail"
when: on_failure
正常效果
最后的job被跳过
异常效果
在test_job中人为造一个错误的shell使其失败
配置了on_failure条件的只需前面任意一个job失败即可,不必是紧挨着的job
补充示例
当失败的job配置了allow_failure为true后,即使这个job失败了,也会按照成功了处理
stages:
- build
- test
- deploy
- send_message
build_job:
stage: build
script:
- echo "build ok"
test_job:
stage: test
script:
- echo "test ok
allow_failure: true
deploy_job:
stage: deploy
script:
- echo "deploy ok"
send_2_dingtalk:
stage: send_message
script:
- echo "pipeline fail"
when: on_failure
补充效果
可以看到:由于test_job配置了allow_failure为true,即使这个job失败了,也按照成功处理,执行了deploy_job,跳过了send_2_dingtalk
3、timeout
作用
用于限制job的运行时间,过长时主动失败。如下三种写法等效
- 3600 seconds
- 60 minutes
- one hour
示例
stages:
- build
- test
- deploy
- send_message
build_job:
stage: build
script:
- sleep 35
timeout: 30s
效果
参考:
https://docs.gitlab.cn/jh/ci/yaml/#variables
https://www.bilibili.com/video/BV18y4y1S7VC?share_source=copy_web&vd_source=e7cb77928d906ea4d27387974d073399