gitlab–基础–5.2–CICD–术语
1、pipeline(管道、流水线)
- Pipeline就是流水线,里面包含自动部署的一些列阶段(Stage)
- 举例:我有一个自动部署的流水线,里面包含如下阶段
- 构建jar阶段
- 构建镜像阶段
- 推送镜像阶段
1.1、pipeline触发条件
- 任何提交
- Merge Request的合并
2、Stage(阶段)
- Stage表示构建阶段
- 每个pipeline都必须包含至少一个Stage
2.1、特点
- 所有Stage会按照顺序运行,即当一个 stage 完成后,下一个 Stage才会开始
- 只有当所有Stage成功完成后,该构建任务Pipeline才算成功
- 如果任何一个Stage失败,那么后面的Stage不会执行,该构建任务(Pipeline)失败
3、Jobs(任务)
- job表示构建任务,表示某个stage里面执行的工作任务
- 一个stage里面可以定义多个job
jobs有如下特点 :
3.1、特点
- 相同stage中的jobs会并行执行
- 相同stage中的jobs都执行成功时,该stage才会成功
- 如果任何一个job 失败,那么该 stage 失败,即该构建任务(Pipeline)失败
3、Jobs(任务)
- job表示构建任务,表示某个stage里面执行的工作任务
- 一个stage里面可以定义多个job
- 默认情况
- GitLab Runner 会保存Job执行过程中产生的数据,然后在下一个Job执行之前(甚至不局限于当次CI/CD)将这些数据恢复。这样即便是不同的 Job 运行在不同的 Runner 上,它也能看到彼此生成的数据。
- before_script 会在所有 Job的script 执行前 调用
- after_script 会在所有 Job的script 执行后 调用
3.1、特点
- 相同stage中的jobs会并行执行
- 相同stage中的jobs都执行成功时,该stage才会成功
- 如果任何一个job 失败,那么该 stage 失败,即该构建任务(Pipeline)失败
3.2、举例
- 这里有一个Pipeline,包含4个阶段,分别是
- Verify 阶段
- job:unit-test
- Build 阶段
- job:java-package
- Dockerpush 阶段
- job:docker-push
- Deploy 阶段
- job:service-1
4、Runner
- Runner就像一个个的工人,而Gitlab-CI就是这些工人的一个管理中心,所有工人都要在Gitlab-CI里面登记注册,并且表明自己是为哪个工程服务的。
- 当相应的工程发生变化时,Gitlab-CI就会通知相应的工人执行软件集成脚本。如下图所示:
4.1、Gitlab-Runner
- gitlab里面的runner叫Gitlab-Runner
- Gitlab-Runner是配合Gitlab-CI进行使用的。
- Gitlab-Runner是一个用来执行 Job中的script内容 的东西
- Gitlab-runner 需要独立部署
4.2、Runner类型
4.2.1、Shared Runner(共享型)
- 这种Runner(工人)是所有工程都能够用的。
- 只有系统管理员能够创建Shared Runner。
4.2.2、Specific Runner(指定型)
- 这种Runner(工人)只能为指定的工程服务。
- 拥有该工程访问权限的人都能够为该工程创建Shared Runner。
5、.gitlab-ci.yml 文件
- 被用来管理 runner 任务
- 作用
- 设置 statge顺序
- 设置 job应该如何触发和工作、执行什么脚本
- 设置 构建pipeline
- 存放于仓库的根目录
- 默认名:.gitlab-ci.yml
5.1、举例
# 定义pipeline流水线的各个执行阶段,从高到低,按顺序执行
stages:
- verify
- build
- dockerpush
- deploy
#单元测试
unit-test:
# 属于哪个阶段
stage: verify
# 获取对应标签名称的Runners来运行jobs
tags:
# 标签名称
- test-cicd
# 执行脚本
script:
- echo unit-test
#java编译
java-package:
stage: build
tags:
- test-cicd
script:
- echo build
#push镜像
docker-push:
stage: dockerpush
tags:
- test-cicd
script:
- echo docker-push
#deploy
service-1:
stage: deploy
tags:
- test-cicd
script:
- echo deploy
- 该配置对应下面的pipeline
- test-cicd是一个Specific Runner,执行脚本的类型是shell
5.2、查看日志
点击unit-test这个job,可以看到里面的日志