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

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

相关内容

热门资讯

【好评中国】让资助的阳光点亮每...   学生资助事关教育公平和民生福祉。“十四五”时期,“全学段覆盖、全流程保障、全方位育人”的资助体系...
求是网文章:“内卷式”竞争形成... 转自:北京日报客户端市场竞争有利于提高资源配置效率,可一旦竞争过了头、越了界,演变成“内卷式”竞争,...
1月1日起施行,幼儿园只能收取... 来源:山东公安 12月23日,国家发展改革委、教育部、财政部联合发布《关于完善幼儿园收费政策的通知》...
余永定:从长期看,消费不可能是...   2025三亚•财经国际论坛暨第五届三亚财富管理大会12月27日在三亚举行。中国社会科学院学部委员...
明年经济工作怎么干?17市州主... 转自:荆州发布12月25日省委经济工作会议在汉召开研究部署2026年经济工作17市州分组讨论一致赞同...