天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
文章目录
- 一、参考文档
- 二、保留字
- 三、常用关键字
- 四、注意事项
- 1. stages注意点
- 2. job注意点
- 2. script注意点
- 3. only和except注意点
一、参考文档
- 官方文档参考地址: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 | 定义一组文件列表,后续运行中使用 |
image | docker镜像使用 |
services | docker镜像使用 |
stages | 定义构建阶段,阶段按定义顺序的优先级运行,同一阶段的job并行运行(实际上并行也是按照字母顺序),前一个阶段的job不成功结束,下一阶段的job不会开始,同一阶段的job在一个执行成功结束前下一个不会开始。若没有定义stages,job的stage则会默认定义为build,test,deploy。若job中未定义stage,则默认为test |
variables | 定义构建变量(可全局使用) |
types | 为stages别名,现已废除 |
三、常用关键字
以下为.gitlab-ci.yml文件的常用关键字:
关键字 | 描述 |
---|---|
after_script | 定义在每个job之后运行的命令,会在job执行结束后执行,可以是数组或多行字符串 |
allow_failure | 允许job失败,不影响任务job的commit状态 |
before_script | 定义在每个job之前运行的命令,会早于job执行,可以是数组或多行字符串 |
cache | 定义一组文件列表,后续运行中使用 |
coverage | 作业的代码覆盖率,正则表达式是唯一有效的值,‘/code coverage: \d+.\d+/’ |
dependencies | job依赖关系,可通过该参数实现相互传递artifacts |
environment | 任务部署的环境变量 |
except | 指定哪些分支不触发job,即该任务在指定的分支上不执行 |
image | docker镜像使用 |
include | 允许job加载其他的yaml文件 |
only | 指定哪些分支会触发任务,可定义多个 |
pages | 上传gitlab pages的结果 |
parallel | 指定并行运行的job实例 |
retry | 指定job失败时可自动执行多少次 |
script | 唯一一个不许参数,需要执行的脚本代码 |
services | docker镜像使用 |
stages | 定义流水线所有阶段,阶段按定义顺序的优先级运行,同意阶段的job并行运行(实际上并行也是按照字母顺序),前一个阶段的job不成功结束,下一阶段的job不会开始,同一阶段的job在一个执行成功结束前下一个不会开始。若没有定义stages,job的stage则会默认定义为build,test,deploy。若job中未定义stage,则默认为test |
stage | job所处阶段,默认为test |
tags | 定义一列tags,指定选择哪个runner运行该任务(前提是runner有设置tag) |
trigger | 指定下游流水线的触发器 |
types | 为stages别名,现已废除 |
variables | 定义构建变量(定义在job外则可全局使用,定义在job下则仅作用于job内) |
when | 指定何时运行job,可选范围为:on_success(默认值,当前一个stages的所有任务成功时才执行),on_failure(当前面stages |
四、注意事项
参数配置请注意以下几点:
1. stages注意点
- stages不指定则会默认为
build,test,deploy
- stage不指定则默认为
test
- stage相同的job在执行时虽是并行,但实际上也是以字母顺序执行,仅在gitlab界面看是并行执行
2. job注意点
这里的job是指作业的job名称,每个job部分都有一个job名称,如果想跳过该job的部分不执行,可以在job名称前使用英文字符.
来实现,如job名称为job-build
,那么可以用.job-build
来实现跳过该部分任务
2. script注意点
script命令正常不需要单引号或双引号
包裹,但当命令中有特殊字符时,需要使用单引号或双引号包裹
如英文半角格式下的:{}[],&*#?|-=!
3. only和except注意点
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
感谢阅读,祝君暴富!