当前位置: 首页 > article >正文

.gitlab-ci.yml文件参数

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 一、参考文档
  • 二、保留字
  • 三、常用关键字
  • 四、注意事项
    • 1. variables注意点
    • 2. stages注意点
    • 3. stage注意点
    • 4. job注意点
    • 5. script注意点
    • 6. only和except注意点
      • 6.1 only和except的值
      • 6.2 only和except的高级策略
    • 7. when注意点


一、参考文档

  • 官方文档参考地址:https://docs.gitlab.com/ee/ci/yaml/
  • 关于.gitlab-ci.yml文件的配置和使用可参考:.gitlab-ci.yml文件配置和使用

二、保留字

.gitlab-ci.yml文件中的job名称可自定义,但下面表中的参数不可以用作job名称
以下参数都是.gitlab-ci.yml文件中非必须的参数

关键字描述
after_script定义在每个job之后运行的命令,会在job执行结束后执行,可以是数组或多行字符串
before_script定义在每个job之前运行的命令,会早于job执行,可以是数组或多行字符串
cache定义一组文件列表,后续运行中使用
imagedocker镜像使用
servicesdocker镜像使用
stages定义构建阶段,阶段按定义顺序的优先级运行,同一阶段的job并行运行(实际上并行也是按照字母顺序),前一个阶段的job不成功结束,下一阶段的job不会开始,同一阶段的job在一个执行成功结束前下一个不会开始。若没有定义stages,job的stage则会默认定义为build,test,deploy。若job中未定义stage,则默认为test
variables定义构建变量(可全局使用)
types为stages别名,现已废除

三、常用关键字

本文中说的几个含义相同的词:
job、任务、作业是指一个意思
stage、阶段是指一个意思

以下为.gitlab-ci.yml文件的常用关键字:

关键字描述
after_script定义在每个job之后运行的命令,会在job执行结束后执行,可以是数组或多行字符串
allow_failure允许job失败,不影响任务job的commit状态
before_script定义在每个job之前运行的命令,会早于job执行,可以是数组或多行字符串
cache定义一组文件列表,后续运行中使用
coverage作业的代码覆盖率,正则表达式是唯一有效的值,‘/code coverage: \d+.\d+/’
dependenciesjob依赖关系,可通过该参数实现相互传递artifacts
environment任务部署的环境变量
except指定哪些分支不触发job,即该任务在指定的分支上不执行
imagedocker镜像使用
include允许job加载其他的yaml文件
only指定哪些分支会触发任务,可定义多个
pages上传gitlab pages的结果
parallel指定并行运行的job实例
retry指定job失败时可自动执行多少次
script唯一一个不许参数,需要执行的脚本代码
servicesdocker镜像使用
stages定义流水线所有阶段,阶段按定义顺序的优先级运行
stagejob所处阶段,默认为test
tags定义一列tags,指定选择哪个runner运行该任务(前提是runner有设置tag)
trigger指定下游流水线的触发器
types为stages别名,现已废除
variables定义构建变量(定义在job外则可全局使用,定义在job下则仅作用于job内)
when指定何时运行job,默认为on_success即所有任务都完成后运行当前任务

四、注意事项

参数配置请注意以下几点:

1. variables注意点

在variables中定义的变量,可以在后面使用${变量名}来引用定义的变量
如定义变量JAVA_HOME = /usr/lib.jvm/jdk-1.8.0.392
后续引用JAVA_HOME的值,如${JAVA_HOME}

2. stages注意点

  • stages 不定义该参数则会默认为build,test,deploy
  • 后面的任务会根据任务中定义的stage顺序来执行,stage的值就是stages中定义的值

3. stage注意点

  • stage 不定义则默认为test
  • 不同任务、相同stage的任务会并行执行
  • 同一stage的job并行运行(实际上并行也是按照字母顺序),前一个stage的job不成功结束,下一阶段的任务不会开始
  • stage相同的job在执行时虽是并行,但实际上也是以字母顺序执行,仅在gitlab界面看是并行执行

4. job注意点

这里的job是指作业的job名称,每个job部分都有一个job名称,如果想跳过该job的部分不执行,可以在job名称前使用英文字符.来实现,如job名称为job-build,那么可以用.job-build来实现跳过该部分任务

5. script注意点

script命令正常不需要单引号或双引号包裹,但当命令中有特殊字符时,需要使用单引号或双引号包裹
如英文半角格式下的:{}[],&*#?|-<>=!

6. only和except注意点

6.1 only和except的值

only和except中可使用如下特殊关键字

关键字描述
api一个pipelines被另一个pipelines触发(非触发器api)
branches常用,当一个分支被推送上来时触发
chats当使用gitlab chatops创建作业时触发
external当使用gitlab以外的外部CI功能(如jenkins)时触发
merge_requests当merge请求创建或跟新时触发
pipelines对于多项目触发器,当使用CI_JOB_TOKEN,并使用gitlab的api创建多个pipelines时触发
pushes当用户执行git push时触发
schedules对于预定的pipelines计划,自动触发
tags当一个打了tag标记的release被提交时触发
triggers使用触发器token创建pipelines时触发
web在gitlab的web界面中的pipelines菜单页,使用run pipeline按钮时触发

6.2 only和except的高级策略

only和except还支持高级策略,四个关键字可用:refs、variables、changes、kubernetes

refs使用策略如下:

  • only和except可同时使用
  • only和except同时指定同一个分支时,only有效,except跳过
  • only和except可用正则表达式
  • only和except可用特殊字符branches、tags、triggers等
  • only和except可用指定仓库地址但不为forks的仓库

其中正则和特殊字符的使用如下:

job_name:
  only:
    - /^dev-.*$/
  except:
    - tags

正则表达式需要用//包起来,且上述正则表达式表示匹配以dev开头的分支进行执行job

7. when注意点

when的值可选范围为:

  • on_success 默认值,当前面的stage所有任务成功结束(或执行失败但是配置了allow_failure:true)时才执行当前任务
  • on_failure 当前面任一stage中的任一任务运行失败后执行当前任务
  • always 不管前面stage任务状态如何都会执行执行当前任务
  • delayed 延迟当前任务的执行,指定延迟时间,配合start_in一起用,start_in的值小于等于1小时,(示例10 seconds,30minutes,1 hour),前面的任务结束,计时开始
  • manual 在Gitlab的UI界面手动触发执行当前任务

感谢阅读,祝君暴富!


http://www.kler.cn/a/233128.html

相关文章:

  • C++编程:利用环形缓冲区优化 TCP 发送流程,避免 Short Write 问题
  • linux c/c++最高效的计时方法
  • 豆瓣均分9:不容错过的9本大模型入门宝藏书籍,非常详细收藏我这一篇就够了
  • [运维][Nginx]Nginx学习(1/5)--Nginx基础
  • Spark:不能创建Managed表,External表已存在...
  • Vue 项目打包后环境变量丢失问题(清除缓存),区分.env和.env.*文件
  • 极狐GitLab 与钉钉的集成实践
  • C++的学习记录
  • [office] excel求乘积的公式和方法 #媒体#笔记#经验分享
  • H12-821_74
  • 贵金属交易包括哪些?香港有哪些贵金属交易平台?
  • 力扣热题100_双指针_11_盛最多水的容器
  • 2022美国大学生数学建模(优秀获奖论文)-A题:Power Planning Model: Magic Weapon for Cyclists
  • Linux time命令教程:如何测量命令的执行时间(附案例详解和注意事项)
  • 【PyQt】08 - 编辑Tab顺序
  • 编译器选择:VSCode安装MarkDown插件
  • mysql RR、RC隔离级别实现原理
  • Node.js之npm单独与批量升级依赖包的方式
  • Android14音频进阶:MediaPlayerService如何启动AudioTrack 上篇(五十五)
  • 有关网络安全的课程学习网页
  • Nginx全面配置
  • 【Java EE初阶十】多线程进阶二(CAS等)
  • 从0开始图形学(光栅化)
  • 【Python】使用 requirements.txt 与 pytorch 相关配置
  • 写读后感的时候,可以适当地引用书中的内容吗?
  • 54.螺旋矩阵(Java)