什么是CI?(理解CI)
-
gitlab-ci是gitlab官方的一种持续集成(Continuous Integration)工具,通常用来进行日常的编译和自动化测试,避免提交上去的代码出现基础错误而影响项目进度。
-
对于大的企业项目来说,往往是多人协同开发,并且项目周期都很长,需要将各种代码进行持续性的合并就称之为持续集成。
-
比如有人可能会基于你所写的代码去实现其他的功能,如果你想要push自己新的修改,在此之前就要对新代码编译与测试,gitlab-ci就可以帮你完成这个功能,在push到gitlab上时,会自动触发编译测试与运行测试等功能。
使用CI的目的
- 希望使用CI能够快速验证每次提交的可用性,经过自动化测试并同步到github。
持续集成的基本过程
-
提交(合并)代码
-
编译
-
测试
-
发布
具体的流程根据公司来制定.gitlab-ci.yml文件(此文件在下文会讲解),更加规范的公司会将CI流程做的更加具体。
gitlab-ci runner
ps:这里只是简单的普及概念,方便大家理解,具体的配置方法不在此赘述。
简单介绍一下runner,这个其实就是专门用来跑测试的主机,比如说我push新的提交之后,CI先会使用我提交的代码进行编译,然后将需要跑的TEST_CASE分配到真正运行的测试代码的主机上进行测试,这些配置好的主机就称之为runner。
.gitlab-ci.yml文件
这个文件中规定CI流程,最基础的流程:编译->分配->运行测试,这是有序流程,此流程就分为三个阶段(stage)。
-
job:在编译阶段可能会有很多的编译任务,每个独立的编译都是一个job。
-
stage:指定一组job在不同场景阶段执行。在同一stage下的job会并行执行。
-
only与except:指定触发条件,比如push的时候触发CI或者手动触发。
-
tags:选择允许哪些具备相同tag的runner执行该job。
-
when:失败执行、成功执行、手动执行、总执行。
-
artifacts:将此job制定的文件上传到服务器,可以传递给下一个job,使用dependencies: []可以禁止传递来的artifacts。
更详细的关键字详解可以参照geeeger发布的https://docs.gitlab.com/ee/ci/quick_start/index.html