十五年测试老手,长期负责WEB\APP 项目测试,目前主要负责团队管理工作。
Gitlab CI yaml配置文件详解
上一篇 /
下一篇 2020-07-04 11:58:03
/ 个人分类:持续集成
通过 .gitlab-ci.yml配置任务
git仓库:https://github.com/Fennay/git...
此文档用于描述.gitlab-ci.yml语法,.gitlab-ci.yml文件被用来管理项目的runner 任务。
如果想要快速的了解GitLab CI ,可查看快速引导。
dS;l7B)\pR(~#r^0.gitlab-ci.yml
从7.12版本开始,GitLab CI使用YAML文件(.gitlab-ci.yml)来管理项目配置。该文件存放于项目仓库的根目录,它定义该项目如何构建。
#SIgG
OOQ{"Z0开始构建之前YAML文件定义了一系列带有约束说明的任务。这些任务都是以任务名开始并且至少要包含script
部分:51Testing软件测试网f-UzJ,DPB\.c/V.w
job1:
script. "execute-script-for-job1"
job2:
script. "execute-script-for-job2"
上面这个例子就是一个最简单且带有两个独立任务的CI配置,每个任务分别执行不同的命令。
#|td3_k|0script
可以直接执行系统命令(例如:./configure;make;make install)或者是直接执行脚本(test.sh)。51Testing软件测试网1Q_
g-P)N
任务是由Runners接管并且由服务器中runner执行。更重要的是,每一个任务的执行过程都是独立运行的。51Testing软件测试网-I3D/^]8_g3M:w
用下面这个例子来说明YAML语法还有更多复杂的任务:51Testing软件测试网 PgU*e+St
image: ruby:2.1
services:
- postgres
before_script. - bundle install
after_script. - rm secrets
stages:
- build
- test
- deploy
job1:
stage: build
script. - execute-script-for-job1
only:
- master
tags:
- docker
下面列出保留字段,这些保留字段不能被定义为job
名称:51Testing软件测试网A!D9m&p4\T/k-[
关键字 | 是否必须 | 描述 |
---|
image | 否 | 用于docker镜像,查看docker文档 |
services | 否 | 用于docker服务,查看docker文档 |
stages | 否 | 定义构建阶段 |
types | 否 | stages 的别名(已废除) |
before_script | 否 | 定义在每个job之前运行的命令 |
after_script | 否 | 定义在每个job之后运行的命令 |
variable | 否 | 定义构建变量 |
cache | 否 | 定义一组文件列表,可在后续运行中使用 |
image和services
这两个关键字允许使用一个自定义的Docker镜像和一系列的服务,并且可以用于整个job周期。详细配置文档请查看a separate document。
3j7B
k mk2c0before_script
before_script
用来定义所有job之前运行的命令,包括deploy(部署) jobs,但是在修复artifacts之后。它可以是一个数组或者是多行字符串。
S(fQnw(O"Ew0after_script
GitLab 8.7 开始引入,并且要求Gitlab Runner v1.2
after_script
用来定义所有job之后运行的命令。它必须是一个数组或者是多行字符串
+U(YU]PAqEo V0stages
stages
用来定义可以被job调用的stages。stages的规范允许有灵活的多级pipelines。
/Y"jLsW0stages中的元素顺序决定了对应job的执行顺序:
nn:T)G!L(b7MQ!K01. 相同stage的job可以平行执行。
2. 下一个stage的job会在前一个stage的job成功后开始执行。
接下仔细看看这个例子,它包含了3个stage: