GitLab CI流水线配置文件.gitlab-ci.yml详解
… contents:: 目录
本文讲解在 :ref:GitLab的汉化与CI持续集成gitlab-runner的配置 <configure_gitlab_i18n_and_create_gitlab_ci_with_gitlab_runner>
的基础上,对GitLab CI流水线配置文件 .gitlab-ci.yml
进行详细的介绍。
文章目录
- GitLab CI流水线配置文件.gitlab-ci.yml详解
- 1. 实验环境
- 2. GitLab CI介绍
- 3. ``.gitlab-ci.yml`` 配置参数
- 4 参数详解
- 4.1 [CI参数详解(一)]()
- 4.2 [CI参数详解(二)]()
1. 实验环境
- server服务端: 操作系统为CentOS 7.6,IP:192.168.56.14, git:2.16.5。
查看server服务端信息::
[root@server ~]# cat /etc/centos-release
CentOS Linux release 7.6.1810 (Core)
[root@server ~]# ip a show|grep 192
inet 192.168.56.14/24 brd 192.168.xxx.xxx scope global noprefixroute enp0s3
[root@server ~]# git --version
git version 2.16.5
GitLab用户信息::
账号 密码
root 1234567890
sunshine 1234567890
GitLab WEB网站地址: http://192.168.xxx.xxx
流水线执行的具体过程都是由 .gitlab-ci.yml
配置文件定义的,本文详细讲解 .gitlab-ci.yml
配置文件的使用。
2. GitLab CI介绍
- GitLab提交持续集成服务,当你在项目根目录中添加
.gitlab-ci.yml
文件,并配置项目的运行器(GitLab Runner
),那么后续的每次提交都会触发CI流水线(pipeline
)的执行。 .gitlab-ci.yml
文件告诉运行器需要做哪些事情,默认情况下,流水线有build
、test
、deploy
三个阶段,即构建
、测试
、部署
,未被使用的阶段将会被自动忽略。- 如果一切运行正常(没有非零返回值),您将获得与提交相关联的漂亮绿色复选标记。这样可以在查看代码之前轻松查看提交是否导致任何测试失败。
- 大多数项目使用GitLab的CI服务来运行测试套件,以便开发人员在破坏某些内容时可以立即获得反馈。使用持续交付和持续部署将测试代码自动部署到模拟环境和生产环境的趋势越来越明显。
- 由于将
.gitlab-ci.yml
文件存放在仓库中进行版本控制,使用单一的配置文件来控制流水线,具有读访问权限的每个人都可以查看内容,从而使其更有吸引力地改进和查看构建脚本。旧的版本也能构建成功,forks项目也容易使用CI,分支可以有不同的流水线和作业。 .gitlab-ci.yml
定义每个项目的流水线的结构和顺序,由以下两个因素决定:- GiTlab Runner运行器使用的执行器(
executor
),执行器常用的Shell
、Docker
、Kubernets
, 我们当前仅使用Shell
执行器,后续再使用其他执行器。 - 遇到进程成功或失败时等条件时做出的决定。
- 可以在 查看到流水线的简单示例。
- 可以在
GitLab CI/CD Examples <https://docs.gitlab.com/ce/ci/examples/README.html>
_ 查看更多的流水线示例。 - 在流水线脚本中可以使用预定义的全局变量,详细可查看
- [企业级的 .gitlab-ci.yml
- Job作业是
.gitlab-ci.yml
文件的基本元素,每个作业至少有script
子句,在流水线中可以定义任意多个作业。 - 每个作业必须具有唯一的名称,但有一些保留的关键字不能用作作业名称,保留关键字(
reserved keywords
)有image
、services
、stages
、types
、before_script
、after_script
、variables
、cache
。
3. .gitlab-ci.yml
配置参数
关键字 | 描述 |
script | 必须参数,运行器需要执行的脚本 |
image | 使用Docker image镜像 |
services | 使用Docker services镜像 |
before_script | 作业执行前需要执行的命令 |
after_script | 作业执行后需要执行的命令 |
stages | 定义流水线所有的阶段 |
stage | 定义作业所处流水线的阶段(默认test阶段) |
only | 限制作业在什么时候创建 |
except | 限制作业在什么时候不创建 |
tags | 作用使用的Runner运行器的标签列表 |
allow_failure | 允许作业失败,失败的作业不影响提交的状态 |
when | 什么时候运行作业 |
environment | 作用部署的环境名称 |
cache | 指定需要在job之间缓存的文件或目录 |
artifacts | 归档文件列表,指定成功后应附加到job的文件和目录的列表 |
dependencies | 当前作业依赖的其他作业,你可以使用依赖作业的归档文件 |
coverage | 作业的代码覆盖率 |
retry | 作业失败时,可以自动执行多少次 |
parallel | 指定并行运行的作业实例 |
trigger | 定义下游流水线的触发器 |
include | 作业加载其他YAML文件 |
extends | 控制实体从哪里继承 |
pages | 上传GitLab Pages的结果 |
retry | 作业失败时,可以自动执行多少次 |
variables | 定义环境变量 |