GitlabCI学习笔记之四:GitLabRunner pipeline语法之only except rules workflow

简介: GitlabCI学习笔记之四:GitLabRunner pipeline语法之only except rules workflow

1.only & except

参考文档:https://docs.gitlab.com/ee/ci/yaml/#only--except

only和except是两个参数用分支策略来限制jobs构建,后面会逐步被rules替代

only定义哪些分支和标签的git项目将会被job执行。

except定义哪些分支和标签的git项目将不会被job执行

示例

job:
  # use regexp
  only:
    - /^issue-.*$/
  # use special keyword
  except:
    - branches

2.rules

rules允许按顺序评估单个规则对象的列表,直到一个匹配并为作业动态提供属性. 请注意, rules不能only/exceptonly/except组合使用。

可用的规则条款包括:

1.if (类似于only:variables )

2.changes ( only:changes相同)

3。exists

示例1:rules:if

如果DOMAIN的值匹配,则需要手动运行。不匹配则默认匹配到on_success。 条件判断从上到下,匹配即停止。多条件匹配可以使用&& ||

variables:
  DOMAIN: www.example.com
deploy:
  stage: deploy
  script:
    - echo "hello deploy"
    - sleep 2;
  rules:
    - if: '$DOMAIN == "example.com"'
      when: manual
    - if: '$DOMAIN == "www.example.com"'
      when: delayed
      start_in: '10'
    - when: on_success

示例2:rules:changes

接受文件路径数组。 如果提交中Jenkinsfile文件发生的变化则为true。

codescan:
  stage: codescan
  tags:
    - build
  script:
    - echo "codescan"
    - sleep 5;
  #parallel: 5
  rules:
    - changes:
      - Jenkinsfile
      when: manual
    - if: '$DOMAIN == "example.com"'
      when: on_success
    - when: on_success

示例3:rules:exists

接受文件路径数组。当仓库中存在指定的文件时操作。

codescan:
  stage: codescan
  tags:
    - build
  script:
    - echo "codescan"
    - sleep 5;
  #parallel: 5
  rules:
    - exists:
      - Jenkinsfile
      when: manual 
    - changes:
      - Jenkinsfile
      when: on_success
    - if: '$DOMAIN == "example.com"'
      when: on_success
    - when: on_success

示例4:rules:allow_failure

使用allow_failure: true rules:在不停止管道本身的情况下允许作业失败或手动作业等待操作.

job:
  script: "echo Hello, Rules!"
  rules:
    - if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "master"'
      when: manual
      allow_failure: true

在此示例中,如果第一个规则匹配,则作业将具有以下when: manualallow_failure: true

3.workflow

顶级workflow:关键字适用于整个管道,并将确定是否创建管道。when :可以设置为alwaysnever . 如果未提供,则默认值always

示例

variables:
  DOMAIN: example.com
workflow:
  rules:
    - if: '$DOMAIN == "example.com"'  #如果不匹配则 不执行pipeline
    - when: never

4.综合示例

before_script:
  - echo "before-script!!"
variables:
  DOMAIN: example.com
  
workflow:
  rules:
    - if: '$DOMAIN == "example.com"'
      when: always
    - when: never
    
stages:
  - build
  - test
  - codescan
  - deploy
build:
  before_script:
    - echo "before-script in job"
  stage: build
  script:
    - echo "mvn clean "
    - echo "mvn install"
    - ech "$DOMAIN"
  after_script:
    - echo "after script in buildjob"
  rules:
    - exists:
      - Dockerfile
      when: on_success 
      allow_failure: true
    - changes:
      - Dockerfile
      when: manual
    - when: on_failure
unittest:
  stage: test
  script:
    - ech "run test"
  when: delayed
  start_in: '5'
  allow_failure: true
  retry:
    max: 1
    when:
      - script_failure
  timeout: 1 hours 10 minutes
  
  
deploy:
  stage: deploy
  script:
    - echo "hello deploy"
    - sleep 2;
  rules:
    - if: '$DOMAIN == "example.com"'
      when: manual
    - if: '$DOMAIN == "aexample.com"'
      when: delayed
      start_in: '5'
    - when: on_failure
  
codescan:
  stage: codescan
  script:
    - echo "codescan"
    - sleep 5;
  when: on_success
  parallel: 5
 
after_script:
  - echo "after-script"

 

相关文章
|
XML 存储 JSON
GitlabCI学习笔记之五:GitLabRunner pipeline语法之artifacts dependencies
GitlabCI学习笔记之五:GitLabRunner pipeline语法之artifacts dependencies
|
前端开发 Java 数据安全/隐私保护
聊聊 OAuth 2.0 的 Token 续期处理
Token 校验逻辑 // CheckTokenEndpoint.checkToken @RequestMapping(value = "/oauth/check_token") @ResponseBody public Map checkToken(@RequestPara.
2278 0
|
存储 缓存 监控
GitlabCI学习笔记之五:GitLabRunner pipeline语法之cache
GitlabCI学习笔记之五:GitLabRunner pipeline语法之cache
|
4月前
|
监控 Windows
Veeam Backup & Replication 12.3.2 Windows x64 - 备份和恢复
Veeam Backup & Replication 12.3.2 Windows x64 - 备份和恢复
291 1
|
网络安全 Nacos 开发者
Nacos作为流行的微服务注册与配置中心,“节点提示暂时不可用”是常见的问题之一
Nacos作为流行的微服务注册与配置中心,其稳定性和易用性备受青睐。然而,“节点提示暂时不可用”是常见的问题之一。本文将探讨该问题的原因及解决方案,帮助开发者快速定位并解决问题,确保服务的正常运行。通过检查服务实例状态、网络连接、Nacos配置、调整健康检查策略等步骤,可以有效解决这一问题。
263 4
|
SQL 关系型数据库 MySQL
【Mysql】MYSQL参数max_allowed_packet 介绍
【Mysql】MYSQL参数max_allowed_packet 介绍
1455 0
|
Prometheus 监控 Cloud Native
Grafana 入门指南:快速上手监控仪表盘
【8月更文第29天】Grafana 是一款开源的数据可视化和监控工具,它允许用户轻松地创建美观的仪表盘和图表,以便更好地理解和监控数据。无论您是需要监控系统性能指标、应用程序日志还是业务关键指标,Grafana 都能提供灵活而强大的解决方案。本指南将带领您快速上手 Grafana,包括安装、配置以及创建第一个监控面板。
3018 2
|
自然语言处理 前端开发 开发者
Angular国际化的秘密武器:手把手教你打造全球化应用,从多语言支持到日期格式化,让您的Web项目无国界畅通无阻的终极指南
【8月更文挑战第31天】在全球化背景下,软件需跨越语言与文化界限。本文探讨如何在Angular应用中实现国际化(i18n)与本地化,通过具体示例介绍多语言支持的实现过程。从创建项目、生成翻译文件到配置`TranslateModule`,详细讲解如何动态切换语言及处理日期、货币等区域特定格式。通过注册特定语言数据,提升应用的全球适应性,使开发者能轻松打造高质量、多语言支持的应用。
246 0
|
Linux 开发工具
Linux yum 使用时提示 获取 GPG 密钥失败Couldn‘t open file RPM-GPG-KEY-EPEL-7
Linux yum 使用时提示 获取 GPG 密钥失败Couldn‘t open file RPM-GPG-KEY-EPEL-7
417 2
|
前端开发 异构计算 API
探索Stable Diffusion:从零开始的代码接入创意图像生成指南
探索Stable Diffusion,了解这一图像生成技术,适用于创意设计、内容生成和前端应用。本文从基本概念到实战,教你如何用Python和相关库搭建环境,通过GPU加速,生成基于文本提示的图像。学习多样性和风格融合技巧,解决实践中遇到的问题,如内存溢出和图像模糊。前端开发者可将模型部署为API,实现实时动态图像生成,提升用户体验。一起发掘Stable Diffusion在艺术和设计领域的无限潜力!
674 2