一、简要说明
基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成
基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署
二、准备Springboot工程
1、IDEA新建工程

2、填写项目工程信息

3、选择Springboot版本和Spring web依赖包

4、Springboot web工程新建完成
工程项目新建完成之后,需要等待Maven下载拉取依赖包。

5、编写一个测的Controller类

package tech.flygo.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description: hello demo
* @author: flygo
* @time: 2022/8/16 10:51
*/
@RestController
publicclassHelloDemoController{
@GetMapping("/sayHello")
public String sayHello(){
return"Hello Jenkins!";
}
}
6、启动测试工程
启动工程,测试工程,默认端口为8080 ,浏览器访问 http://127.0.0.1:8080/sayHello

7、浏览器访问测试结果

三、把项目工程提交到Gitlab
之前我们搭建了Gitlab代码仓库,在Gitlab上创建Git工程,把刚才的工程代码提交到仓库中。
1、登录Gitlab管理后台
这个是我的自建的Gitlab地址:http://192.168.95.130:8929


2、新建一个空白的Git项目


3、填写工程Git项目信息

4、Git项目创建完成

5、使用IDEA把项目提交到GIt仓库中

6、选择vcs版本控制->Create Git Repository...


7、右键整个工程,选择Git -> Commit Directory...

8、选择文件所有需要,提交到Git

9、填写远程Git项目仓库地址

10、push代码到远程Git仓库


11、在浏览器打开远程Git仓库地址

四、Jenkins持续集成
在浏览器打开Jenkins管理后台:http://192.168.95.131:8080/jenkins,这个之前通过虚拟机搭建好的Jenkins。
1、新建和配置Jenkins任务信息
1.1、新建Jenkins任务

1.2、填写任务信息

2、配置Jenkins项目任务,Git仓库信息
2.1、Jenkins任务详情,填写项目Git仓库信息

如果Git仓库需要密码,添加Jenkins统一管理的用户名和密码




2.2、配置好,进入任务详情


2.3、构建完成,查看构建的日志信息


2.4、查看拉取回来Jenkins拉取回来的代码

2.5、进入Jenkins项目任务详情

2.6、配置构建,增加构建步骤,选择调用顶层Maven目标

3、配置Jenkins项目工程的Maven打包信息
3.1、配置Maven打包信息和命令

3.2、在Jenkins项目任务详情,执行立即构建

3.3、查看项目构建日志信息
Maven拉取详情项目工程依赖包的速度会比较慢,如果拉取超时,配置Maven国内的镜像源。
具体配置参照Maven安装&配置
[3] Build阶段-Maven安装&配置

3.4、进入Jenkins Docker容器中查看打包好的文件

# 进入Jenkins Docker容器
$ docker exec -it jenkins-server /bin/bash
# 在容器中,进入Jenkins项目打包的目录
$cd /var/jenkins_home/workspace/jenkins-publish-demo
# 进入target目录,查看打包好的Jar文件
$cd target/4、把打包好的Jar复制到目标部署服务器
4.1、配置构建之后的操作

4.2、配置SSH服务器信息


4.3、在Jenkins项目任务详情,执行立即构建

4.4、查看项目构建日志信息


4.5、在目标服务器查看复制过来的jar文件

# 进入部署的目录
$cd /usr/local/deploy/
# 进入复制过来的目录
$cd target/
# 查看目录下的所有文件
$ ll5、编写项目工程的Docker文件
5.1、在Springboot项目工程pom.xml文件中,修改打包后的文件名

5.2、在工程docker目录下,编写Dockerfile文件

FROM openjdk:8u322-jre
MAINTAINER FlyGo
ENV PARAMS=""
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo$TZ > /etc/timezone
ADD jenkins-publish-demo.jar /app.jar
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS /app.jar $PARAMS"]5.3、在工程docker目录下,编写docker-compose.yml文件

version:"3.1"
services:
# 指定服务名称
jenkins-publish-demo:
build:
# 上下文路径 . 为当前目录
context:.
# 指定构建镜像的 Dockerfile 文件名
dockerfile:Dockerfile
# 指定服务使用的镜像
image:jenkins-publish-demo:v1.0
# 指定容器名称
container_name:jenkins-publish-demo
# 指定服务运行的端口
ports:
# 应用启动的端口号
-8081:8080
# 指定容器的环境变量
environment:
JAVA_OPTS:"-Xms512m -Xmx512m -Xmn128m -XX:PermSize=128m -XX:MaxPermSize=256m"5.4、把编写好的docker相关文件提交到git仓库


5.5、在Gitlab管理查看提交的结果

6、通过Jenkins打包运行Springboot项目
6.1、在Jenkins项目工程配置构建后的执行脚本
脚本核心步骤:
- 进入部署服务器的docker目录,这里使用绝对路径
- 把目录下的target jar包复制到docker目录下
- 停止已运行的容器
- 使用docker-compose重新打包构建运行
- 删除清理docker构建之后,none标识的无效docker镜像文件
cd /usr/local/deploy/docker
mv ../target/*.jar ./
docker-compose down
docker-compose up -d --build
docker image prune -f 
6.2、在Jenkins项目任务详情,执行立即构建

6.3、查看项目构建日志信息
docker第一次拉取镜像,特别是默认的镜像源,会出现拉取超时,Jenkins打包不成功。
如果出现拉取Docker镜像超时,可以设置一个国内的阿里云镜像源。



6.4、浏览器测试访问部署的Springboot服务
部署的服务地址:http://192.168.95.131:8081/sayHello
# 查看docker启动的Springboot项目服务进程
$ docker ps | grep jenkins-publish-demo

7、修改Springboot服务源码,重新打包部署服务
7.1、在Springboot项目工程,修改服务源码

7.2、提交修改后的代码到Git仓库

7.3、登录Jenkins管理后台,重新对项目打包部署

7.4、查看Jenkins项目打包日志


7.5、浏览器重新访问Springboot服务
部署的服务地址:http://192.168.95.131:8081/sayHello

五、持续交付和部署
1、下载安装插件 Git Parameter

2、进入Jenkins项目配置

3、配置参数化构建过程

4、填写Git参数信息

5、在Maven打包之前,添加分支切换脚本命令


6、编写执行shell脚本,切换到定义git的tag分支
git checkout $tag
7、在Gitlab管理后台创建v1.0 Tag分支




8、在Gitlab管理后台创建v2.0 Tag分支
8.1、在master分支上修改Springboot源码和docker-compose.yml镜像版本为2.0

8.2、提交修改的代码到master分支

8.3、操作步骤7,在Gitlab管理后台创建 v2.0 Tag分支


9、在Jenkins管理后台,项目详情

10、Jenkins构建Tag v1.0版
10.1、选择Build with Parameters,选择v1.0开始构建

10.2、查看本次打包构建记录日志

10.3、浏览器重新访问Springboot服务
部署的服务地址:http://192.168.95.131:8081/sayHello

11、Jenkins构建Tag v2.0版
11.1、选择Build with Parameters,选择v2.0开始构建

11.2、查看本次打包构建记录日志

11.3、浏览器重新访问Springboot服务
部署的服务地址:http://192.168.95.131:8081/sayHello
