Gitlab官方文档:https://docs.gitlab.com/ee/ci/yaml/README.html
Gitlab CI通过YAML文件管理配置job,该文件存放于仓库的根目录, 默认名为.gitlab-ci.yml
,定义了job应该如何工作。
- pipeline:
一个pipeline就是一次完整的构建任务,里面可以包含多个阶段(stages)。
- stage:
stages表示任务构建的阶段。一次pipeline中允许定义多个stages,这些stages 会有以下特点:
1. 所有 stages 会按照顺序运行,即当一个 stage 完成后,下一个 stage 才会开始
2. 只有当所有 stages 完成后,该构建任务 (pipeline) 才会成功
3. 如果任何一个 stage 失败,那么后面的 stages 不会执行,该构建任务 (pipeline) 失败
- job:
jobs表示构建工作,表示某个stage里面执行的工作。 我们可以在stages里面定义多个jobs,这些jobs会有以下特点:
1. 相同stage中的jobs会并行执行
2. 相同stage中的jobs都执行成功时,该stage才会成功
3. 如果任何一个job失败,那么该stage失败,即该构建任务 (pipeline) 失败
jobs的定义:
1. 定义了在什么条件下执行它们的条件
2. 具有任意名称的顶级元素,并且必须至少包含script
3. 不受定义数量的限制
示例:
job1:
script: "execute-script-for-job1"
job2:
script: "execute-script-for-job2"
上面包含两个单独的job,其中每个job执行不同的命令。
每个job都是独立运行的,可以直接执行命令./configure; make; make install
或运行脚本sh test.sh
。jobs由runners获取并在runners各自的环境中执行。
每个job必须有一个唯一的名称,但有几个保留的关键字不能用作job名称:
image
services
stages
types
before_script
after_script
variables
cache
- 配置参数列表:
一个job被定义为一列参数,这些参数指定了job的行为。下表列出了可用的job参数:
值 | 是否必须 | 描述 |
---|---|---|
script | yes | 由Runner执行的shell脚本或命令 |
image | no | 使用的docker镜像 |
services | no | 使用的docker服务镜像 |
before_script | no | 在作业之前执行的脚本或命令 |
after_script | no | 在作业之后执行的脚本或命令 |