gitlab-ci.yml关键字(六)inherit、retry 、interruptible
创始人
2024-05-03 12:48:29

inherit

示例

inherit:default

选择当前作业继承的全局默认值

可能的取值

  • true(默认)或false启用或禁用所有默认关键字的继承
  • 要继承的特定默认关键字列表
default:retry: 2image: ruby:3.0interruptible: truejob1:script: echo "This job does not inherit any default keywords."inherit:default: falsejob2:script: echo "This job inherits only the two listed default keywords. It does not inherit 'interruptible'."inherit:default:- retry- image

上面例子中,全局default 中定义了三个全局变量分别为:retry、image、interruptible。
在job1中不适用全局变量,在job2中仅使用retry、image两个全局变量

inherit:variables

用于控制全局变量inherit:variables继承的关键字。
可能的取值:

  • true(默认)或false启用或禁用所有全局变量的继承
  • 要继承的特定变量列表
variables:VARIABLE1: "This is variable 1"VARIABLE2: "This is variable 2"VARIABLE3: "This is variable 3"job1:script: echo "This job does not inherit any global variables."inherit:variables: falsejob2:script: echo "This job inherits only the two listed global variables. It does not inherit 'VARIABLE3'."inherit:variables:- VARIABLE1- VARIABLE2

interruptible

interruptible: true启用后,在为同一分支上的新更改启动管道时,将取消正在运行的作业。比如说每次提交都会触发代码扫描任务,在很短的时间内连续提交了两次,第一次的任务还没跑完,第二次触发时会中断第一次的任务。

如果设置了interruptible: false 在开始作业后无法取消后续作业

示例

stages:- stage1- stage2- stage3step-1:stage: stage1script:- echo "Can be canceled."interruptible: truestep-2:stage: stage2script:- echo "Can not be canceled."step-3:stage: stage3script:- echo "Because step-2 can not be canceled, this step can never be canceled, even though it's set as interruptible."interruptible: true

在上面例子中,如果此时再次触发流水线,则可能有两种结果

  1. 已取消,如果只是step-1正在运行或挂起。
  2. 未取消,step-2开始后。

retry

使用retry用于配置作业失败时重试的次数。如果未定义,则默认为0并且作业不会重试。

当一个作业失败时,该作业最多再处理两次。
可能的取值

  • 0(默认) / 1 / 2

示例

test:script: rspecretry: 2

retry:when

使用retry:when with retry:max仅针对特定的失败案例重试作业。 retry:max是最大重试次数,例如retry,可以是 0、1或2。
可能的取值:

  • always:重试任何失败(默认)
  • unknown_failure:失败原因不明时重试
  • script_failure:脚本失败时重试
  • api_failure: 重试 API 失败
  • stuck_or_timeout_failure:作业卡住或超时时重试
  • runner_system_failure:如果运行器系统出现故障(例如,作业设置失败),请重试
  • runner_unsupported:如果Runner不受支持,请重试
  • stale_schedule:如果无法执行延迟的作业,请重试
  • job_execution_timeout:如果脚本超过为作业设置的最大执行时间,则重试
  • archived_failure:如果作业已存档且无法运行,请重试
  • unmet_prerequisites:如果作业未能完成先决条件任务,请重试
  • scheduler_failure:如果调度程序未能将作业分配给运行器,则重试
  • data_integrity_failure:如果检测到结构完整性问题,请重试

示例

test:script: rspecretry:max: 2when: runner_system_failure

如果存在系统故障以外的故障,则不会重试该作业。

test:script: rspecretry:max: 2when:- runner_system_failure- stuck_or_timeout_failure

也可以使用数组来登记多个条件

相关内容

热门资讯

上市公司要求会计师辞任被拒绝,... 董事会建议在本公司将召开的股东特别大会(「股东特别大会」)上提呈以下决议案:(i) 罢免国卫会计师事...
注销60家法人牌照、清退逾30... 随着强监管严监管持续推进,保险中介行业迎来新一轮格局重塑。国家金融监督管理总局披露的最新数据显示,2...
康芝药业(300086.SZ)... 格隆汇3月2日丨康芝药业(300086.SZ)公布,国家组织集采药品协议期满品种接续采购办公室发布《...
(新春走基层)广东潮州乡村民俗... 3月2日,广东省潮州市急水村,扛标旗的少女。扛标旗是广东潮州乡村盛行的传统民俗,由妙龄少女肩扛绣有“...
伊朗古列斯坦王宫遭袭受损 来源:央视新闻客户端总台记者获悉,位于伊朗首都德黑兰市中心的世界文化遗产——古列斯坦王宫在当地时间2...