1. 介绍
管道配置从作业(job)开始, 作业是 .gitlab-ci.yml 文件的最基本元素。
job是:
- 定义了约束,指出应在什么条件下执行
- 具有任意名称的顶级元素,并且必须至少包含 script 子句
- 不限制,可以定义多个
//示例
job1:
script: "echo job1"
job2:
script: "echo job2"
上面是两个简单的job,其中每个 job 都执行不同的命令,在 script 中,可以直接执行命令(/.configure;make;make install)或运行脚本(test.sh)。
(1) 验证 .gitlab-ci.yml
GitLab CI 的每个实例都有一个称为 Lint 的嵌入式调试工具,该工具可以验证 .gitlab-ci.yml 文件的内容。您可以在 ci/lint 项目名称空间下找到它。
项目 -> CI/CD -> 流水线
(2) 不可用的作业名称
- image
- services
- stages
- types
- before_script
- after_script
- variables
- cache
- include
(3)使用保留关键字
如果要使用保留关键字(比如 true ),请尝试执行以下操作:
- 使用引号,如 “true”
- 改为其它形式,如 /bin/true
2. job 配置参数
下表列出 job 了可用的参数
关键字 | 描述 |
---|---|
script | 由 Runner 执行的 Shell 脚本 |
image | 使用的 docker 映像。也可用: image:name 和 image:entrypoint |
services | 使用的 docker 服务映像。也可用:services:name ,services:alias ,services:entrypoint ,和services:command |
before_script | 重写作业之前执行的一组命令。 |
after_script | 重写作业后执行的一组命令。 |
stages | 定义管道中的阶段。 |
stage | 定义作业阶段(默认:test)。 |
only | 限制 job 的创建。也可用:only:refs , only:kubernetes , only:variables , and only:changes 。 |
except | 限制什么时候不创建 job。也可用:except:refs , except:kubernetes , except:variables , except:changes 。 |
rules | 用于评估和确定作业的选定属性以及是否创建该作业的条件列表。不可与only/except 一起使用。 |
tags | 用于选择 Runner 的 tags 列表。 |
allow_failure | 允许作业失败。失败的工作不会影响提交状态。 |
when | 什么时候开始工作。也可用:when:manual 和when:delayed 。 |
environment | 作业部署到环境的名称。 也可用:environment:name ,environment:url ,environment:on_stop ,environment:auto_stop_in 和environment:action 。 |
cache | 在后续运行之间应缓存的文件列表。也可用:cache:paths ,cache:key ,cache:untracked ,和cache:policy 。 |
artifacts | 成功时附加到作业的文件和目录列表。也可用:artifacts:paths ,artifacts:expose_as ,artifacts:name ,artifacts:untracked ,artifacts:when ,artifacts:expire_in ,artifacts:reports ,artifacts:reports:junit ,和artifacts:reports:cobertura 。在GitLab 企业版,这些都是可供选择:artifacts:reports:codequality,artifacts:reports:sast,artifacts:reports:dependency_scanning,artifacts:reports:container_scanning,artifacts:reports:dast,artifacts:reports:license_management,artifacts:reports:performance和artifacts:reports:metrics。 |
dependencies | 通过提供要从中获取工件的作业列表,限制将哪些工件传递给特定作业。 |
coverage | 给定作业的代码覆盖率设置。 |
retry | 发生故障时可以自动重试作业的时间和次数。 |
timeout | 定义自定义作业级别的超时,该超时优先于项目范围的设置。 |
parallel | 多少个作业实例应并行运行。 |
trigger | 定义下游管道触发器。 |
include | 允许此作业包括外部YAML文件。也可用:include:local ,include:file ,include:template ,和include:remote 。 |
extends | 该作业将要继承的配置条目。 |
pages | 上载作业结果以用于GitLab页面。 |
variables | 在作业级别上定义作业变量。 |
interruptible | 定义在通过新的运行使其冗余时是否可以取消作业。 |
resource_group | 限制作业并发。 |
参数详情:https://docs.gitlab.com/ee/ci/yaml/README.html#parameter-details