【从零开始学极狐gitlab】08作业关键字retry、parallel、rules(三) #JIHULAB101

1、retry

作用

用于job失败时重试,最多可以重试2次,

示例

示例中echo语句少一个引号

stages:- build- test- deploy
build_job:stage: buildscript: - echo "build okretry: 2

效果

在这里插入图片描述

retry:when

作用

retry可以更细粒度的仅在某些失败时重试

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

示例

stages:- build- test- deploy
build_job:stage: buildscript: - echo "build okretry:max: 2when: script_failure

效果

由于是脚本语法错误导致失败,所以job重试
在这里插入图片描述

2、parallel

作用

配置并行运行的job数量,值为2~50

示例

stages:- build- test- deploy
build_job:stage: buildscript: - echo "build ok"parallel: 3

效果

有3份job在运行,名称按序号排序
在这里插入图片描述

parallel: matrix

作用

矩阵命名,不是设定并行的数量,而是根据给定的一组名称创建并行job

示例

stages:- build- test- deploy
build_job:stage: buildscript: - echo "build ok"parallel:matrix:- PROVIDER: awsSTACK:- monitoring- app1- app2- PROVIDER: ovhSTACK: [monitoring, backup, app]- PROVIDER: [gcp, vultr]

效果

job的按照给定的字符串创建
在这里插入图片描述

3、rules

作用

rules关键字用于配置流水线运行时运行或不运行某个job,取代了only和except,且与他们不能同时出现在流水线中。可以配置多个条件,流水线运行时从前开始匹配,匹配即停止
rules包含以下规则:

  • if
  • changes
  • exists
  • allow_failure
  • variables
  • when

①rules if

作用

通过条件判断job是否执行,if后面写条件,when后面写动作

示例

当提交分支为dev时自动发布到开发服务器,当提交分支为main分支时手动发布到线上服务器

stages:- build- test- deploy
build_job:stage: buildscript: - echo "build ok"
deploy_2_dev:stage: deployscript:- echo "deploy 2 dev server"rules:- if: $CI_COMMIT_BRANCH == "dev"when: on_success
deploy_2_online:stage: deployscript:- echo "deploy 2 online server"rules:- if: $CI_COMMIT_BRANCH == "main"when: manual
效果

由于在main分支提交的文件,只执行了deploy_2_online这个job
在这里插入图片描述

②rules exists

作用

通过文件是否存在判定job是否执行,可以避免因文件不存在造成的脚本报错

示例
stages:- build- test- deploy
build_job:stage: buildscript:- echo "build ok"
deploy_job:stage: deployscript: - cat Dockerfilerules:- exists:- Dockerfile
文件不存在效果

在这里插入图片描述

文件存在效果

在这里插入图片描述

③rules changes

作用

通过检查指定文件的是否有内容改变,判断是否执行job

示例
stages:- build- test- deploy
build_job:stage: buildscript:- echo "build ok"
deploy_job:stage: deployscript: - cat Dockerfilerules:- changes:- Dockerfile
文件内容未改变效果

在这里插入图片描述

文件内容改变效果

在这里插入图片描述
参考:
https://docs.gitlab.cn/jh/ci/yaml/#variables
https://www.bilibili.com/video/BV18y4y1S7VC?share_source=copy_web&vd_source=e7cb77928d906ea4d27387974d073399


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部