整体步骤概括
- 准备两台虚拟机,最小安装,配置ip能ping通外网即可,安装docker
- 一台虚拟机跑gitlab,一台跑gitlab runner和springboot项目
- 将springboot项目打成systemctl系统服务
- 编写gitlab.ci自动构建你的springboot项目
自动构建的基本思路是当dev分支合并到master分支时,触发构建,自动发布,下面是详细步骤
1.通过docker、docker-compose搭建gitlab
使用的是一个开源库
这一步基本参考这个库就能搭建成功了
-
确定你安装好了docker和docker-compose
1
- 下载官方docker-compose文件
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
修改两个地方
2
gitlab_port就是你访问的端口地址,gitlab_host则是你配置的虚拟机ip
这时你的目录结构应该是这样的
3
cd至gitlab目录下执行命令docker-compose up
等待docker镜像安装完成
完成后等待几分钟gitlab初始化,访问http://yourdomain:10080,重置密码
4
这里我已经建好项目了,到此 第一步搭建gitlab服务已经完成接下来是第二步
2.注册gitlab-runner完成项目自动构建
-
新建dev分支
5
checkout你的dev分支,开发只对dev分支操作,master分支则用于ci构建
- 编写gitlab-ci.yml
pages:
stage: deploy
script:
- cd /gitlab-project/demo
- git pull
- mvn package
- systemctl restart demo
only:
- master
可以看到ci只针对master分支,即dev分支merge至master分支时 触发构建
- 搭建runner服务器
前面说到需要准备两台服务器,一台搭建gitlab,一台搭建runner
gitlab-runner比较简单,查一查如何安装即可,安装完毕输入
gitlab-ci-multi-runner register
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
#这里输入你的gitlab域名
# executor输入shell
域名和token在Specific Runners这里

注册完毕后

可以看到这里有显示,你应该只有一个
接下来是将springboot项目做成系统服务systemctl这部分内容自己百度,贴一下自己的demo.service
Description=demo
[Service]
WorkingDirectory=/gitlab-project/demo
PrivateTmp=true
Type=simple
ExecStart=/usr/java/jdk1.8.0_181-amd64/bin/java -jar /gitlab-project/demo/target/demo-0.0.1-SNAPSHOT.jar -java.io.tmpdir=/gitlab-project/tmp --spring.config.location=/gitlab-project/demo/target/classes/application.yml
ExecStop=kill -9 `ps -ef|grep java|grep -v grep|grep demo|awk '{print $2}'`
[Install]
WantedBy=multi-user.target
gitlab-project/demo是这个demo项目的路径,在进行ci前 你应该git clone项目至对应路径
3. 最后一步啦
现在项目的某个接口返回数据是这样的

提交至dev分支

可以看到刚刚我们提交的请求已经出现在项目主页了,我们合并他

选择对应的job查看,已经在跑了



小伙伴们还不赶紧试试?
网友评论