gitlab的ci/cd功能为工程中的持续集成与部署带来便利,让项目快速迭代,但是也许你的公司内使用的步骤只有编译和发布,这样是没有问题(在大多数情况下)。不过ci中其实是可以集成单元测试的,这样会让程序更稳定、可靠。
集成的方法:
1.首先在仓库的根目录要有“.gitlab-ci.yml”这个文件,这个是gitlab执行ci的脚本文件是yml格式的
2.了解该文件的基本语法,以及执行ci的命令,一般执行build的命令大致为:
stages:
- build
before_script:
- your_before_script
docker-build:
stage: build
script:
- your_docker_build_script
after_script:
- your_after_script
only:
- web
when: manual
tags:
- your_runner
web:对于使用GitLab UI中的“运行管道”按钮创建的管道。only:限制创建作业的时间;
tags:用来构建工程的runner;
when:manual,手动执行。
3. 集成单元测试gtest:
其实就是在stages里加上test项
stages:
- test
- build
before_script:
- your_before_script
unit-test:
stage: test
script:
- docker build -f ./Dockerfile_test .
only:
- web
when: manual
tags:
- your_runner
docker-build:
stage: build
script:
- your_docker_build_script
after_script:
- your_after_script
only:
- web
when: manual
tags:
- your_runner
核心语句是“- docker build -f ./Dockerfile_test .”, 因为我们的工程使用docker构建部署的,在build时会默认用Dockerfile,所以增加的单元测试用了另一份:Dockerfile_test,文件里将make命令改成“make test”,并删除了make后的安装等步骤,这些在unit test里不需要。
之后会有两个需要运行的阶段:一个“uint-test”,一个“docker-build”,理论上是可以自动运行,这里我们为了演示用的手动方式。
逐步执行即可:
上图是gtest失败的示例。
上图是gtest通过的示例。
gtest执行通过则可继续执行构建步骤了。