Jenkins配合GitLab进行自动构建部署
需求背景🌆
在平常开发的过程中,每次开发完都要经历,开发->推送代码->maven打包->构建Dockerfile->服务器自动运行,这个步骤不多,但是也是相当麻烦,于是发现了jekins等相关编排工具可以大大提升效率,从以上步骤演变为:开发->推送代码,后面的docker-compose会自动的构建以及启动镜像即可实现部署效果。
实现结构图🤩
%3CmxGraphModel%3E%3Croot%3E%3CmxCell%20id%3D%220%22%2F%3E%3CmxCell%20id%3D%221%22%20parent%3D%220%22%2F%3E%3CmxCell%20id%3D%222%22%20value%3D%22%E6%9E%84%E5%BB%BAdocker%E5%B9%B6%E5%90%AF%E5%8A%A8%E4%B8%8A%E7%BA%BF%22%20style%3D%22text%3Bhtml%3D1%3Balign%3Dcenter%3BverticalAlign%3Dmiddle%3Bresizable%3D0%3Bpoints%3D%5B%5D%3Bautosize%3D1%3BstrokeColor%3Dnone%3BfillColor%3Dnone%3B%22%20vertex%3D%221%22%20parent%3D%221%22%3E%3CmxGeometry%20x%3D%22135%22%20y%3D%221410%22%20width%3D%22140%22%20height%3D%2230%22%20as%3D%22geometry%22%2F%3E%3C%2FmxCell%3E%3C%2Froot%3E%3C%2FmxGraphModel%3E
实现过程📝
gitlab
安装启动
这边就不讲了,网上一堆教程
修改配置
点击admin
这两个一定要勾选上
生成API token
点击头像,偏好设置
按以下图进行创建api token,并点击复制
jenkins
安装启动
使用docker-compose进行启动,注意修改映射目录以及端口号
services:
jenkins:
image: jenkins/jenkins:lts
restart: always
network_mode: bridge
ports:
- "48888:8080"
- "50000:50000"
user: root
container_name: jenkins
volumes:
- /volume2/docker/jenkins:/var/jenkins_home
- /etc/localtime:/etc/localtime
访问48888端口,看到以下页面,使用以下命令进入终端,并查看密码
docker exec -it jenkins /bin/bash
将刚才的密码填进去咯。然后稍候,点击安装推荐插件,按步骤提示创建用户
从官网下载maven,并上传至映射目录下(该换源就换源)
安装必要插件
位置:系统管理->插件管理
Maven Integration plugin
Publish Over SSH
GitLab Plugin
修改配置
新增系统凭证
位置:系统管理->凭证管理
点击system->全局凭据 (unrestricted)
将自己生成连接gitlab仓库的SSH私钥按提示添加保存。(网上找一下,SSH生成公私钥,将公钥上传至gitlab,私钥添加至此)
全局工具配置
位置:系统管理->全局工具配置
maven设置是我修改为自定义的配置,java使用的是该容器里自带的
git配置如下
maven配置如下
点击保存即可
系统配置
位置:系统管理->系统配置
找到gitlab配置,将用户名以及相关地址填进去
点击添加,按步骤输入,gitlab api token如何生成会在gitlab步骤处说明,记得要点击Test Connection进行测试
Publish over SSH处,进行服务器相关信息填写
远程目录可以不填,填完后一会在项目中远程目录就会自动拼接该目录。切记点击Test Connection进行测试,保证其连接成功。
点击保存即可
新建任务
位置:首页->新建任务
按指示输入相关信息,并选择maven项目
注意以下图片位置信息,并进行修改
build处,输入maven命令,使用跳过测试
clean install package -Dmaven.test.skip=true
webhook URL记录下来
以下token复制一下
来到gitlab,进入对应仓库,将以上信息填入gitlab,将jenkins中生成的webhook URL以及token填入,并点击保存更改
我这边在编译完后需要上传三个文件到服务器上进行编译docker镜像
第一个,即是整个项目最重要的启动jar包
第二个,Dockerfile,将jar和启动环境进行组合
这是Dockerfile的文件内容
第三个就是docker-compose配置文件,用于编排Dockerfile
点击保存即可
测试
在gitlab中点击测试webhook
jenkins出现构建记录
点击查看控制台输出
并在服务器发现docker镜像已经构建完成,成功!
- 感谢你赐予我前进的力量