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

1、retry

作用

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

示例

示例中echo语句少一个引号

stages:
  - build
  - test
  - deploy
build_job:
  stage: build
  script: 
    - echo "build ok
  retry: 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: build
  script: 
    - echo "build ok
  retry:
    max: 2
    when: script_failure

效果

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

2、parallel

作用

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

示例

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

效果

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

parallel: matrix

作用

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

示例

stages:
  - build
  - test
  - deploy
build_job:
  stage: build
  script: 
    - echo "build ok"
  parallel:
    matrix:
      - PROVIDER: aws
        STACK:
          - monitoring
          - app1
          - app2
      - PROVIDER: ovh
        STACK: [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: build
  script: 
    - echo "build ok"
deploy_2_dev:
  stage: deploy
  script:
    - echo "deploy 2 dev server"
  rules:
    - if: $CI_COMMIT_BRANCH == "dev"
      when: on_success
deploy_2_online:
  stage: deploy
  script:
    - 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: build
  script:
    - echo "build ok"
deploy_job:
  stage: deploy
  script: 
    - cat Dockerfile
  rules:
    - exists:
      - Dockerfile
文件不存在效果

在这里插入图片描述

文件存在效果

在这里插入图片描述

③rules changes

作用

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

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

在这里插入图片描述

文件内容改变效果

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值