gitlab-ci.yml关键字(五)tags 、only 、when

这篇具有很好参考价值的文章主要介绍了gitlab-ci.yml关键字(五)tags 、only 、when。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

tags

使用Tags用于选择Runner的标签列表
我们在创建Runner 时可以给该Runner打上特定的标签,那后续流水线中的job如果需要使用特定标签的Runner执行时,就需要使用tags来标记
gitlab ci only,Gitlab CI,gitlab,ci/cd,git
比如这里有两个标签的Runner
gitlab ci only,Gitlab CI,gitlab,ci/cd,git
gitlab ci only,Gitlab CI,gitlab,ci/cd,git
也可以对当前的runner进行一些配置上的设置
gitlab ci only,Gitlab CI,gitlab,ci/cd,git

only / except

使用only / except 关键字来控制何时创建作业

  • 用于only定义作业何时运行
  • 用于except定义作业何时不运行(除此之外都运行)

only:refs/except:refs

使用only:refs和except:refs关键字来控制何时根据分支名来创建作业

示例
  • 分支名称,例如mainor my-feature-branch。
  • 匹配分支名称的正则表达式/^feature-.*/
  • 以下关键字
value desc
api 对于由管道 API触发的管道。
branches 当管道的 Git 引用是一个分支时。
chat 对于使用GitLab ChatOps命令创建的管道。
external 当您使用 GitLab 以外的 CI 服务时。
merge_requests 对于创建或更新合并请求时创建的管道。启用合并请求管道、合并结果管道和合并
pipelines 对于使用带有, 或关键字的 API创建的多项目管道。CI_JOB_TOKENtrigger
pushes 对于由事件触发的管道git push,包括分支和标签。
tags 当管道的 Git 引用是tag时。
triggers 对于使用触发器令牌创建的管道。
job1:
  script: echo
  only:
    - main
    - /^issue-.*$/
    - merge_requests

job2:
  script: echo
  except:
    - main
    - /^stable-branch.*$/

如果作业不使用only、except或rules,则默认only设置为branches 和tags。
例如,job1和job2是等价的:

job1:
  script: echo "test"

job2:
  script: echo "test"
  only:
    - branches
    - tags

only:variables/except:variables

only:variables与except:variables可以根据CI/CD中的变量来动态地将作业添加到流水线中。下面的例子就是使用变量来控制作业的运行。

示例
variables:
  TYPE: 'running'

testCode:
  stage: test
  script: 
    - echo "只有在type变量为running时才会运行流水线"
  only:
    variables:
      - $TYPE == 'running'

gitlab ci only,Gitlab CI,gitlab,ci/cd,git
使用时可以配置多个only:variables的条件判断,只要有一条符合条件,作业就会被创建到流水线中。

only:changes/except:changes

当 Git push 修改文件时,使用changes关键字 来判断是否修改了指定目录/文件下的内容。以此来判断是否新建任务。比如我们一般在修改了src文件下的内容之后才会执行代码扫描。

一些常用的值:

  • 文件路径
  • 个目录的通配符路径,例如path/to/directory/*,或一个目录及其所有子目录,例如path/to/directory/**/*
  • 具有相同扩展名或多个扩展名的所有文件的通配符glob路径,例如*.md或path/to/directory/*.{rb,py,sh}.
  • 根目录或所有目录中文件的通配符路径,用双引号引起来。例如".json"或"**/.json"。
testCode:
  stage: test
  script: 
    - echo "只有在分支修改了src文件夹之后才会执行流水线"
  only:
    refs:
      - branches
    changes:
      - src/*

gitlab ci only,Gitlab CI,gitlab,ci/cd,git

push_audit:
  stage: test
  except:
    refs:
      - master
  script:
	- echo "当分支是master时不运行,其余场景都运行"

when

使用when来配置作业运行的条件。如果未在作业中定义,则默认值为when: on_success.
一些可能的取值:

  • on_success(默认):当早期阶段的所有任务都成功运行或者有配置allow_failure: true.时运行当前任务
  • manual:在Gitlab UI中手动触发任务
  • always:无论早期阶段的作业状态如何,都运行作业。也可用于workflow:rules.
  • on_failure:仅当至少一个早期阶段的作业失败时才运行该作业
  • delayed:将作业的执行延迟 指定的持续时间
  • never: 不要运行作业。只能在rules节或中使用workflow: rules

示例

stages:
  - build
  - cleanup_build
  - test
  - deploy
  - cleanup

build_job:
  stage: build
  script:
    - make build

cleanup_build_job:
  stage: cleanup_build
  script:
    - cleanup build when failed
  when: on_failure

test_job:
  stage: test
  script:
    - make test

deploy_job:
  stage: deploy
  script:
    - make deploy
  when: manual
  environment: production

cleanup_job:
  stage: cleanup
  script:
    - cleanup after jobs
  when: always

在此示例中,脚本:文章来源地址https://www.toymoban.com/news/detail-780512.html

  • cleanup_build_job仅在build_job失败时执行。
  • cleanup_job无论成功或失败,始终作为管道中的最后一步执行。
  • deploy_job当您在 GitLab UI 中手动运行它时执行。

到了这里,关于gitlab-ci.yml关键字(五)tags 、only 、when的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GitLab-CI 指南

    前置工作 部署GitLab 部署GitLab-Runner 注册Runner到GitLab 在项目工程根目录下创建一

    2024年02月11日
    浏览(37)
  • gitlab-ci相关部署踩坑及要点记录

    最近在搞cicd相关的事情,在这个过程中遇到了一些疑惑,顺便记录下来,如果对正在有相同迷惑的同学有帮助的话,也是一件很好的事情。 准备工作: 安装gitlab,这个安装网上太多了,可以使用二进制的方式安装,也可以使用docker直接运行。 安装gitlab-runner,这个主要就是

    2024年01月22日
    浏览(37)
  • CI/CD:GitLab-CI 自动化集成/部署 JAVA微服务的应用合集

    日常开发中,每次代码编写完成后,都需要手动打包,并且上传服务器,无论本地打包的时间或者上传文件到服务器都需要花费大量的时间来完成,都是重复的并且毫无意义,应该将时间花费在更有价值的时间上;所以编写这篇文章,将自己收集、搭建、测试的步骤或经验汇

    2024年02月08日
    浏览(50)
  • DevOps系列文章 之 SpringBoot整合GitLab-CI实现持续集成

    在企业开发过程中,我们开发的功能或者是修复的BUG都需要部署到服务器上去,而这部分部署操作又是重复且繁琐的工作,GitLab-CI 持续集成为我们解决了这一痛点,将重复部署的工作自动化,大大的节省了程序员们的宝贵时间。本文详细讲述了 GitLab-CI 持续集成的安装、部署

    2024年02月13日
    浏览(45)
  • k8s部署gin-vue-admin框架、gitlab-ci、jenkins pipeline 、CICD

    测试环境使用的jenkins 正式环境使用的gitlab-ci 创建yaml文件 启动服务 配置jenkins 配置nginx jenkins机器上的dockerfile yaml其它都一样除了svc,因为svc需要绑定slb地址 启动 配置dockerfile 配置nginx 结果图 原文

    2024年02月08日
    浏览(55)
  • Gitlab CI/CD: rules和only

    rules 和 only 都是在 GitLab CI/CD 配置中用于控制作业(job)何时执行的,但它们之间有一些不同之处: only : only 用于定义在特定情况下触发作业的条件。你可以指定一系列触发条件,只有当至少一个条件匹配时,作业才会被触发执行。 only 通常用于根据分

    2024年02月03日
    浏览(67)
  • gitlab_ci.yml展示单元测试报告 (FREE)

    CI/CD 流水线通常包含验证您的代码的测试作业。 如果测试失败,流水线将失败并通知用户。处理合并请求的人必须检查作业日志并查看测试失败的地方,以便可以修复它们。 您可以将作业配置为使用单元测试报告,极狐GitLab 会显示有关合并请求的报告,以便更轻松、更快速

    2024年02月11日
    浏览(38)
  • static关键字和final关键字

    在java的中,static和final是两个必须掌握的。static和final用法多样,且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面将依次介绍static和final。注意,某些场景下,staic和final可以联合使用

    2024年02月09日
    浏览(61)
  • 搜索引擎优化指南:SEO关键字、长尾关键字、短尾关键字以及反向链接

    SEO 代表“搜索引擎优化”。它是一种数字营销策略,旨在提高网站或网页在搜索引擎未付费结果中的在线可见性。通常,网站在搜索结果页面中排名越高,或在搜索结果列表中显示的频率越高,它将从搜索引擎用户那里获得的访问者就越多。 SEO 策略可以针对各种类型的搜索

    2024年02月04日
    浏览(148)
  • 【iOS】—— 属性关键字及weak关键字底层原理

    参考博客:IOS开发基础——属性(copy strong weak等) 内存管理有关的: weak , assign , strong , retain , copy 线程安全有关的的: nonatomic , atomic 访问权限有关的的: readonly , readwrite (只读,可读写) 修饰变量的: const , static , extern 这些

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包