需求背景🌆

在平常开发的过程中,每次开发完都要经历,开发->推送代码->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填入,并点击保存更改

2024-09-17-chktxwkm.png

我这边在编译完后需要上传三个文件到服务器上进行编译docker镜像

第一个,即是整个项目最重要的启动jar包

第二个,Dockerfile,将jar和启动环境进行组合

这是Dockerfile的文件内容

第三个就是docker-compose配置文件,用于编排Dockerfile

点击保存即可

测试

在gitlab中点击测试webhook

jenkins出现构建记录

点击查看控制台输出

并在服务器发现docker镜像已经构建完成,成功!