springboot工程基于jenkins完成自动化ci过程

说明

本文主要介绍基于jenkins完成自动化ci的过程,开发人员可以使用此流水线自动部署服务。本地测试环境为springboot微服务项目。用户提交代码到gitlab,触发jenkins拉取gitllab上的代码,然后完成编译构建成jar包,并完成sonarsqube代码质量检测,然后将jar包传输到部署机器上,使用docker部署运行起来。

依赖环境部署

环境准备

使用环境说明

使用的虚拟机环境centos7.9,使用vmware安装

同步主机时区为亚洲,并同步时间

[root@linux-node ~]# echo "ZONE=Asia/Shanghai" >> /etc/sysconfig/clock         
[root@linux-node ~]# rm -f /etc/localtime
#链接到上海时区文件       
[root@linux-node ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

关闭防火墙和selinux

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0
[root@localhost ~]# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

设置yum源

wget -O /etc/yum.repos.d/CentOS-Base.repo  http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo  http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

安装docker

linux安装docker

创建数据目录将数据持久话到该目录下,以便后期好维护

mkdir -p /data

安装maven

linux安装maven

gitlab安装部署

docker安装gitlab

jenkins安装部署

docker安装jenkins

sonarqube部署

docker安装sonarsqube

创建java工程并测试将代码上传到gitlab仓库

gitlab上创建项目

springboot工程基于jenkins完成自动化ci过程_第1张图片

创建springboot工程,并将代码提交到hello-test工程下

idea创建springboot项目

jenkins集成篇

说明

jenkins插件安装
离线安装:将下载好的插件直接上传到目录plugins重启(我的目录是/data/jenkins_home/plugins)
上传后重启jenkins,重启可以在url后加restart完成。如:http://192.168.59.129:8090/restart
已经整理好的插件上传到gitee上,需要的话可以联系下载
https://gitee.com/jsonsvn/jenkins-plugins.git

创建自由风格的项目

springboot工程基于jenkins完成自动化ci过程_第2张图片

jenkins全局配置

管理Jenkins中点击
springboot工程基于jenkins完成自动化ci过程_第3张图片

配置maven

手动配置:
主机上安装maven后将maven的安装目录移动到jenkins数据卷中
在这里插入图片描述
重命名文件夹
在这里插入图片描述
在页面上配置,MAVEN_HOME要使用容器内部目录,不要使用宿主机目录
springboot工程基于jenkins完成自动化ci过程_第4张图片

配置jdk

springboot工程基于jenkins完成自动化ci过程_第5张图片
页面配置jdk
springboot工程基于jenkins完成自动化ci过程_第6张图片

jenkins系统配置

我们要将构建好的jar包发送到目标服务器上并部署起来,需要使用Publish Over Ssh插件,用于jenkins可以连接到目标服务器。
配置
springboot工程基于jenkins完成自动化ci过程_第7张图片
系统配置最下面会有个Publish over SSH
springboot工程基于jenkins完成自动化ci过程_第8张图片
点击新增
springboot工程基于jenkins完成自动化ci过程_第9张图片
密码需要点击高级设置,勾选Use password authentication, or use a different key,然后填写密码
springboot工程基于jenkins完成自动化ci过程_第10张图片
Remote Directory 需要在设置的主机上提前创建好,否则会报错。
点击下面的测试按钮测试是否配置成功。
在这里插入图片描述

jenkins集成git

填入项目的地址
项目私有,创建私有的账号密码
指定分支
springboot工程基于jenkins完成自动化ci过程_第11张图片配置成功后jenkins会将代码下载到jenkins用户的家目录的workspace目录下,如下图操作:
springboot工程基于jenkins完成自动化ci过程_第12张图片

集成maven构建

1.点击增加构建步骤----选择调用顶层Maven目标
springboot工程基于jenkins完成自动化ci过程_第13张图片
2.配置maven构建执行的命令springboot工程基于jenkins完成自动化ci过程_第14张图片3.点击立即构建查看日志会看到执行的命令在这里插入图片描述查看容器目录 会发现在workspace项目目录下多了个target目录,jar包在里面。在这里插入图片描述

集成sonarqube完成代码质量检测

配置sonar-sanner到jenkins中

将sonnar-scanner目录移动到jenkins数据卷目录中
在这里插入图片描述
修改conf/sonar-scanner.properties

#sonarqube服务器地址
sonar.host.url=http://192.168.59.129:9000
#源代码文件编码
sonar.sourceEncoding=UTF-8

jenkins下载SonarQube Scanner插件

springboot工程基于jenkins完成自动化ci过程_第15张图片

jenkins上系统配置sonar

系统配置中搜索sonar
springboot工程基于jenkins完成自动化ci过程_第16张图片
点击增加sonar按钮
springboot工程基于jenkins完成自动化ci过程_第17张图片
添加密钥时没相应,自己重启了几次jenkins没定用,然后就输入了个name后回车,然后重新进后就可以添加密钥了,也不知道为啥。
springboot工程基于jenkins完成自动化ci过程_第18张图片
springboot工程基于jenkins完成自动化ci过程_第19张图片
创建完成后点击保存。

添加sonar检测步骤

全局配置sonar

全局工具配置
springboot工程基于jenkins完成自动化ci过程_第20张图片

配置sonar检测步骤

点击增加构建步骤
springboot工程基于jenkins完成自动化ci过程_第21张图片
保存后构建测试。

查看日志可以看到代码检测的命令
在这里插入图片描述

报错:
springboot工程基于jenkins完成自动化ci过程_第22张图片
由于之前用命令检测过代码,所以会报错,需要把之前生产的/.scannerwork目录删除。
springboot工程基于jenkins完成自动化ci过程_第23张图片

将构建好的jar包上传到目标服务器,并在目标服务器上使用docker运行起来。

springboot工程基于jenkins完成自动化ci过程_第24张图片
在工程下准备dockerfile文件和docker-compose.yml文件springboot工程基于jenkins完成自动化ci过程_第25张图片
Dockerfile文件

FROM openjdk:8u262
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
COPY  hello-demo.jar /usr/local/
WORKDIR /usr/local/
CMD java -jar hello-demo.jar

docker-compose.yml

version: '3.1'
services:
  hello-demo:
    build:
      context: ./
      dockerfile: Dockerfile
    image: hello-demo:v1.0.0
    container_name: hello-demo
    ports:
      - 8081:8080

配置远程传输的文件以及需要执行的命令
springboot工程基于jenkins完成自动化ci过程_第26张图片

此时就可以构建成功了,完成后访问地址:
springboot工程基于jenkins完成自动化ci过程_第27张图片
表示已经部署成功了。

配置提交代码后jenkins自动拉取代码 (webhook配置)

需要安装gitlab插件
springboot工程基于jenkins完成自动化ci过程_第28张图片
勾选下面当代码推送后触发构建
springboot工程基于jenkins完成自动化ci过程_第29张图片

在gitlab上
springboot工程基于jenkins完成自动化ci过程_第30张图片
springboot工程基于jenkins完成自动化ci过程_第31张图片
点击下面的Add webhook后提示
不能填写本地主机的url允许本地地址构建webhook
在这里插入图片描述
需要在admin settings network 处勾选
springboot工程基于jenkins完成自动化ci过程_第32张图片
重新添加
会在项目下看到webhook的地址
springboot工程基于jenkins完成自动化ci过程_第33张图片
点击此处测试自动化构建

springboot工程基于jenkins完成自动化ci过程_第34张图片
解决测试webhook返回403问题
在这里插入图片描述
解决:
在系统配置里将此处勾选去掉
系统管理 -> 系统设置 -> Enable authentication for ‘/project’ end-point
springboot工程基于jenkins完成自动化ci过程_第35张图片

重新测试会发现jenkins已经开始自动构建了。

你可能感兴趣的:(devops,jenkins,spring,boot,自动化)