背景
我们知道 gitlab 是 git 仓库管理工具, 其实它还具有 ci/cd 功能
使用
我们在项目根目录放入 .gitlab-ci.yml 文件, 在 push 或者 merge request 时, 就会触发 gitlab-runner 执行该 ci 作业
概念
先介绍下常用的概念
runner
运行器, 运行 gitlab-ci.yml 文件的作业, 可以不与 gitlab 部署. 事实上, 一般我们都是分开部署的, 在 gitlab-runner 上配置好注册地址和 token 即可
pipeline
流水线, 表示该项目的一系列构建, 测试, 部署的流程
stage
阶段, 每个流水线下包含多个阶段
- 阶段之间是顺序执行的
- 前一个阶段执行成功, 后面的才会继续执行
- 所有阶段执行成功, 流水线执行成功
我们在 stages 节点下声明需要执行的阶段和按照声明顺序, 表明它们的执行顺序
job
作业, 每个 stage 下有多个作业
- 作业之间是并行执行的
- 一个作业失败, 阶段执行失败
- 所有作业成功, 阶段执行成功
script
脚本, 每个 job 下有多个脚本, 表示要执行的 shell
# 定义 build 和 deploy 两个 stage, 按照声明顺序执行
stages:
# 表示先执行 stage 为 build 的所有 job (job 之间并行执行)
- build
- deploy
# 非关键字的名称作为 job 名字
build-job1:
stage: build
script:
- echo "Hello,build-job1"
- echo "I am in build1 stage"
-
# 非关键字的名称作为 job 名字
build-job2:
stage: build
script:
- echo "Hello,build-job2"
- echo "I am in build2 stage"
# 非关键字的名称作为 job 名字
deploy-job:
stage:deploy
script:
- echo "Hello,deploy-job"
- echo "I am in deploy stage"
默认地, 如果不声明 stages
则默认是 build
test
deploy
.
job
如果不声明 stage
, 默认是 test