##背景

公司现有的技术架构为分布式(粗粒度微服务)服务架构,代码版本管理工具使用的gitlab,部署是是通过Jenkins编译打包并部署的,看到原来的项目部署编写的*.sh很繁琐,故先在现有项目测试环境进行实验。

早就听闻gitlab可以集成CI CD 但一直没有尝试过,第一步当然是尝试将研发push的代码先编译,做个初步的编译异常提醒,参考了各种文章和官网文档,开始了接入runner 跟这篇文章过程一样,这里整理一下( [后端]gitlab之gitlab-ci自动部署 - 简书 https://www.jianshu.com/p/df433633816b)

###步骤

  • 安装GitLab-CI 这个不用安装了,装好GitLab就自带了

  • 安装GitLab-Runner 在centOS上安装gitlab-ci-multi-runner

$ curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-ci-multi-runner/script.rpm.sh | sudo bash
$ yum install gitlab-ci-multi-runner

这样就装好了gitlab-ci-multi-runner,然而我们只是装好了gitlab-runner,当然我们要接着向gitlab-CI注册这个runner,不然gitlab-CI在push事件到来的时候怎么知道要调用谁呢?这里也可以发现和webhook方式的区别,webhook方式是我们主动配置了一个连接给gitlab;gitlab-runner只要注册一下就好了。

  • 那么我们就注册一下
$ gitlab-ci-multi-runner register
#引导会让你输入gitlab的url,输入自己的url,例如http://gitlab.example.com/
#引导会让你输入token,去相应的项目下找到token,例如ase12c235qazd32
#引导会让你输入tag,一个项目可能有多个runner,是根据tag来区别runner的,输入若干个就好了,比如web,hook,deploy
#引导会让你输入executor,这个是要用什么方式来执行脚本,图方便输入shell就好了。

在输入 executor 类型的时候,我尝试过docker的形式 ,会让你选择依赖的镜像,我选择的是maven官方镜像,编译的时候会在一个容器中进行 每次都会启动一个容器,环境非常干净,但后面到我自己需要构建镜像的时候遇到问题,估计不能在容器中构建镜像,就unregister后重新register,然后选择shell的方式

  • 注册成功后gitlab里面可以看到

这里写图片描述

  • 编写.gitlab-ci.yml 在项目根目录下编写.gitlab-ci.yml这样在push之后,gitlab-ci就会自动识别来解析了。我最初只是想要编译结果 所以是这样写的,关于这个文件的更多介绍,可以参考这篇文章 --》持续集成-通过 .gitlab-ci.yml配置任务 - RUNYUQINGBING的博客 - CSDN博客 http://blog.csdn.net/RUNYUQINGBING/article/details/78608820
stages:
 - build

makejava:
  stage: build
  script:
    - mvn clean package -P test
    - mvn clean
  tags:
      - dev

到这一步后,我们提交的项目runner会自动帮我们编译,也会给gitlab反馈一个结果,比如

这里写图片描述

我们可以从中清晰的看到谁push的代码有问题,也可以点进去看到具体的错误