时 间:2019-10-24
功 能:GitLab CI / CD管道配置参考
官方文档:https://docs.gitlab.com/ee/ci/yaml/README.html#tags
1、script
由runner执行的shell脚本,job所需的唯一关键字
示例1:
job:
script: "bundle exec rspec"
示例2:
job:
script:
- uname -a
- bundle exec rspec
2、image
指定用于job的docker镜像
image:name
docker图像全名
image:entrypoint
docker容器的入口点执行的命令或脚本
示例1:
image: "registry.example.com/my/image:latest"
示例2:
image:
name: "registry.example.com/my/image:latest"
3、services:
指定服务docker镜像,改镜像连接到指定的基本镜像image
services:name
应使用的图像的全名
示例1:
services:
- postgresql:9.4
- redis:latest
示例2:
services:
- name: postgresql:9.4
- name: redis:latest
4、before_script:
定义在所有job之前运行的命令(包括部署作业),必须是数组
5、after_script:
定义在所有job之后运行的命令(包括失败的job),必须是数组
6、stages:
定义job可以使用的阶段,且是全局定义,允许有多级管道,它定义可罪业执行的顺序
同一阶段的job并行运行,前一阶段的job完成后,将运行下一阶段的job
示例1:
stages:
- build
- test
- deploy
7、.pre和.post
每个管道均可使用者两个阶段
.pre: 保证始终是管道的第一个阶段
.post: 保证始终是管道的最后一个阶段
示例1:
stages:
- .pre
- a
- b
- .post
8、stage:
按职位定义,并依赖stages全局定义的职位,允许将作业分为不同的阶段,并且相同的作业stage可以并行执行
9、使用自己的runner
gitlab Runner 默认一次仅运行一个作业
可以在自己的runner上并行运行的情况: 不同的runnner上运行、runner的concurrent设置已经更改
10、only/except
设置job策略以限制创建job的时间
only:运行job的分支和标签名称
except:不允许job的分支和标签名称
允许是正则表达,允许指定存储库路径以过来吧派生作业,更多功能可以查看高级用法
11、tags
从允许运行此项目的所有runner列表中选择特定的runner,
tags允许为具有指定标签的runner允许job
示例1:
job:
tags:
- ruby
- postgres
12、allow_failure
允许作业失败,且不会影响其余部分,除手动job以外
13、when
当发生故障或发生故障时允许的job
可使用值:on_success on_failure always manual
14、environment
定义作业部署到特定环境,如果指定不存的名称在则自动创建
deploy to production:
stage: deploy
script: git push production HEAD:master
environment:
name: production
15、cache
指定job之前缓存的文件和目录列表,如果cache在job外定义,则表示它是全局的
16、artifacts
在指定成功、失败、始终执行job时,赢附加到该文件和目录的列表
作业完成后,工件将被发送到GitLab,并可在GitLab UI中下载。
17、dependencies
默认artifacts先前阶段的所有dependencies参数都将传递,
但可以使用参数定义一个有限的作业列表(或没有作业)以从中获取工件。
依赖工作何时失败:如果设置为依赖项的作业的工件已 过期或已 擦除,那么依赖项作业将失败。
18、need
允许执行job外的顺序,这样就可以运行某些job而无需等待其他job,无需考虑阶段顺序,可以当多个阶段同时运行
19、coverage
允许您配置如何从作业输出中提取代码覆盖率
20、retry
允许您配置在失败的情况下重试作业的次数
21、timeout
配置特定job的超时时间
22、parallel
配置并行运行的job实例数,此值必须大于等于2且小于等于50
23、trigger
下游管道触发器,当triggerGitLab 根据定义创建的作业启动时,将创建一个下游管道
24、interruptible
如果job因新的管道允许而变得多余,而应去下作业,默认false
仅当 启用了自动取消冗余管道功能时,才使用此值。
25、include
包含外部YAML文件,要求外部YAML文件名具有扩展名.yml或.yaml
示例1:
include:
- 'https://gitlab.com/awesome-project/raw/master/.before-script-template.yml'
- '/templates/.after-script-template.yml'
26、extends
定义要使用的作业extends要继承的条目名称
27、pages
是一项特殊job,用于将静态内容上传到GitLab
28、variables
在.gitlab-ci.yml定义的内部变量,用于存储非敏感项目配置
在job环境中传递这些变量,可以全局设置,也可以按job设置
在variables工作级使用关键字时,它将覆盖全局YAML变量和预定义的变量
示例1:
variables:
DATABASE_URL: "postgres://postgres@postgres/my_database"
29、不推荐使用的参数
全局定义 types
工作定义 type
全局定义image,services,cache,before_script,after_script
30、其他:
自定义构建目录
处理并发
嵌套路径
YAML的特殊功能
隐藏键(job)
锚点
扳机
处理Git推送
跳过工作