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