CI/CD基本原理
- 检测到 git 有新的代码提交(定时检测或主动触发),生成任务
- agent(真正干活的进程,可以分布在多台机器)领取任务,拉取代码,运行一段脚本
- 展示结果:成功与否、测试覆盖率等
Gitlab CI/CD运行原理
开发者推送、提交代码到Gitlab,Gitlab通过项目的 .gitlab-ci.yml 文件配置,找到指定的项目gitlab runner,runner运行相关的命令,进行编译、 集成、测试、交付、部署,一切顺利地话会分发到各个服务器(测试服务器、预发布服务器、正式服务器等),此时一个迭代开发上线流程走完。流程图如下。
GitLab Runner
- GitLab Runner是一个开源项目,用于运行项目持续集成、持续部署作业并将结果发送回GitLab,与GitLab CI/CD一起使用。GitLab Runner是用Go编写的,可以作为单个二进制文件运行,不需要语言特定的要求,运行在Linux,macOS和Windows操作系统上。只要您可以在其上编译Go二进制文件,其他操作系统可能会起作用,也可以运行在Docker上。
执行流程
-
Pipeline
一次 Pipeline 其实相当于一次构建任务,里面可以包含多个流程,如安装依赖、运行测试、编译、部署测试服务器、部署生产服务器等流程。 任何提交或者 Merge Request 的合并都可以触发 Pipeline
一次pipeline相当于一次 ( 构建任务 ),包含多个 ( 流程 ) 任何 ( push提交 ) 或者 ( merge request的合并 ) 都可以 ( 触发pipeline ) -
Stages - 构建阶段
Stages 表示构建阶段,就是上面的流程。一次 Pipeline 中可以定义多个 Stages
顺序:所有 Stages 会按照顺序运行,即当一个 Stage 完成后,下一个 Stage 才会开始 成功:只有当所有 Stages 完成后,该构建任务 (Pipeline) 才会成功 失败:如果任何一个 Stage 失败,那么后面的 Stages 不会执行,该构建任务 (Pipeline) 失败总结:
一个pipeline包含多个stage 顺序执行,上一个stage执行完,才能执行下一个stage 所有stage成功,pipeline才成功;只要有一个stage失败,整个pipeline就会失败 -
Jobs - 构建的工作
Jobs 表示构建工作,表示某个 Stage 里面执行的工作。 我们可以在 Stages 里面定义多个 Jobs
顺序:相同 Stage 中的 Jobs 会 ( 并行 ) 执行 成功:相同 Stage 中的 Jobs 都执行成功时,该 Stage 才会成功 失败:如果任何一个 Job 失败,那么该 Stage 失败,即该构建任务 (Pipeline) 失败总结:
一个 ( Pipeline ) 包含多个 ( Stage ),一个 ( Stage ) 包含多个 ( Job ) ( Stage ) 中的 ( Job ) 是 ( 并行 ) 执行的 --------------------- job并行 ( Job ) 都成功,则 ( Stage ) 成功 一个 ( Job失 ) 败,则 ( Stage ) 失败,则 ( Pipeline ) 失败