【从零开始学极狐gitlab】07作业关键字allow_failure、when、timeout(二) #JIHULAB101

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值