##背景
公司现有的技术架构为分布式(粗粒度微服务)服务架构,代码版本管理工具使用的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