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

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

相关内容

热门资讯

乌鲁木齐银行:一站式服务解锁安... 转自:新华财经一直以来,乌鲁木齐银行坚持勇担社会责任,主动服务民生发展。自2016年与乌鲁木齐、伊犁...
最后一批次“寻味硒都”餐饮消费... 转自:恩施发布最后一波餐饮消费券要来了别让美味溜走!12月6日上午10:00请登录支付宝平台进入“寻...
志愿者日启幕上海冰雪运动科学指... (来源:上观新闻)12月5日,恰逢国际志愿者日,上海市“12・5志愿者日主题活动暨冰雪项目科学健身指...
中国经验照亮世界减贫之路 中青报·中青网记者 国新冠“贫困治理是全球性难题,中国减贫经验吸引了国际社会的广泛关注。”谈及开发中...
国家卫健委:警惕赴境外接受资质... 中新社北京12月5日电 (记者 李纯)中国国家卫生健康委员会新闻发言人胡强强5日在北京表示,一些机构...