Gitlab CICD

关键词

Pipeline

Pipeline执行的过程就是一次执行Stage中的列表流程的阶段。

Stages

默认的Stage

Gitlab的Pipeline有一个默认的Stages流程,如果ci文件中没有存在的Stages阶段,则会使用官方提供的Stages阶段。Gitlab CICD的pipeline有一个默认的stages即下列阶段。

  • .pre
  • build
  • test
  • deploy

多个任务可以分配给同一个Stage。而分配给同一个Stage的任务是并行执行的。

image-20220301110307460

其中的job3与jib4按照理论就是并行执行的。

可以定义自己的stages流程。如下图

image-20220301110823693

如图所示job3与job4都分配给了stage3.

运行结果

image-20220301110856746

Script

所有的job都需要有这么一个关键词。script就是执行Linux命令

下图显示了如何使用script执行Linux命令

image-20220301111235615

image-20220301111306218

retry

运行失败,重新运行几遍.一般取值为3

1
2
3
test:
script: respc
retry: 2

或者指定失败原因,当这个失败原因的时候才回去触发重试机制

1
2
3
4
5
test:
script: respc
retry:
max: 2
when: runner_system_failure

失败原因 列表 todo

when

发生故障或者经过故障仍然能够运行的作业

only

指定分支,only/except 是规定当前job的可见状态,一个项目有很多分支,tag,我们的流水线,为了对特定的分支,特定的tag执行不同的job,这里就要使用only和except 在任务上加上这一段代码,就表明当前任务只有在master分支可以运行。

cache

缓存是将当前工作环境目录中的一些文件,一些文件夹存储起来,用于在各个任务初始化的时候恢复。

1
2
3
4
cache:
key: hello-vue-cache
path:
- node_modules

在其他任务启动的时候就会恢复这个缓存目录,并不会讲缓存目录删除掉。如果没有缓存,则等待任务结束会将产生的文件删除掉。

image

image 是全局关键词可以在全局层面设置image镜像之后,在单独的job任务中也设置镜像。由于每个服务是单独的,也和前面的cache关键词对应起来。

注入变量

gitlab-ci.yml中自己定义

全局变量

1
2
3
4
5
6
7
8
9
10
11
variables:
MT_VAR: "All jobs can use this variable`s value"
logs_var:
script:
- echo $MT_VAR
job_deploy:
variables:
imgname: "name2"
containername: "name1"
script:
- docker build -t $imgname

如何查看pipeline中预定义的变量

1
2
3
get_all_var:
scropt:
- export