Linux下Jenkins自动化部署SpringBoot应用
1、 Jenkins介绍
官方网址:https://www.jenkins.io/ 
2、安装Jenkins
2.1 centos下命令行安装
访问官方,点击文档:

点击 Installing Jenkins:

点击 Linux:


选择 Red Hat/Alma/Rocky,就可以看到相关的安装命令:
            
            
              shell
              
              
            
          
          sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum upgrade
# 安装安装包
sudo yum install fontconfig java-17-openjdk
sudo yum install jenkins
# 启动
sudo systemctl daemon-reload
sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins
        其它版本的安装请参考:https://pkg.jenkins.io/redhat-stable/
            
            
              shell
              
              
            
          
          # 本文安装
# 下载镜像
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 安装
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
# 更新
yum upgrade
# 安装 Java 环境
yum install java-11-openjdk
# 安装 Jenkins
yum install jenkins
# 启动
systemctl daemon-reload
systemctl enable jenkins
systemctl start jenkins
systemctl status jenkins
        2.2 错误处理
2.2.1 错误1
如果报错:
            
            
              shell
              
              
            
          
          $ wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
--2022-11-15 09:38:52-- https://pkg.jenkins.io/redhat-stable/jenkins.repo
Resolving pkg.jenkins.io (pkg.jenkins.io)... 151.101.2.133, 151.101.66.133,
151.101.130.133, ...
Connecting to pkg.jenkins.io (pkg.jenkins.io)|151.101.2.133|:443... connected.
ERROR: cannot verify pkg.jenkins.io's certificate, issued by '/C=US/O=Let's
Encrypt/CN=R3':
Issued certificate has expired.
To connect to pkg.jenkins.io insecurely, use `--no-check-certificate'.
        请使用下面的命令:
            
            
              shell
              
              
            
          
          wget --no-check-certificate -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
# 或者
yum install -y ca-certificates
        2.2.2 错误2
如果报错:
            
            
              shell
              
              
            
          
          $ yum install jenkins
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.bupt.edu.cn
 * extras: mirrors.bfsu.edu.cn
 * updates: mirrors.bfsu.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 jenkins.noarch.0.2.414.3-1.1 将被 安装
--> 解决依赖关系完成
依赖关系解决
=====================================================================================================================
 Package                   架构                     版本                             源                         大小
=====================================================================================================================
正在安装:
 jenkins                   noarch                   2.414.3-1.1                      jenkins                    85 M
事务概要
=====================================================================================================================
安装  1 软件包
总计:85 M
安装大小:85 M
Is this ok [y/d/N]: y
Downloading packages:
警告:/var/cache/yum/x86_64/7/jenkins/packages/jenkins-2.414.3-1.1.noarch.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID ef5975ca: NOKEY
jenkins-2.414.3-1.1.noarch.rpm 的公钥尚未安装
        请使用下面的命令:
            
            
              shell
              
              
            
          
          $ yum install jenkins --nogpgcheck 
        2.3 启动状态
            
            
              shell
              
              
            
          
          # 查看启动状态
# systemctl status jenkins
● jenkins.service - Jenkins Continuous Integration Server
   Loaded: loaded (/usr/lib/systemd/system/jenkins.service; enabled; vendor preset: disabled)
   Active: active (running) since 六 2023-10-21 13:16:13 CST; 10s ago
 Main PID: 5851 (java)
    Tasks: 53
   Memory: 1.1G
   CGroup: /system.slice/jenkins.service
           └─5851 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war...
10月 21 13:15:49 opengauss jenkins[5851]: c251022ca0c2478794f84f67117810d9
10月 21 13:15:49 opengauss jenkins[5851]: This may also be found at: /var/lib/jenkins/secrets/initialAdminPassword
10月 21 13:15:49 opengauss jenkins[5851]: *************************************************************
10月 21 13:15:49 opengauss jenkins[5851]: *************************************************************
10月 21 13:15:49 opengauss jenkins[5851]: *************************************************************
10月 21 13:16:13 opengauss jenkins[5851]: 2023-10-21 05:16:13.192+0000 [id=30]        INFO        jenkins.In...ation
10月 21 13:16:13 opengauss jenkins[5851]: 2023-10-21 05:16:13.203+0000 [id=23]        INFO        hudson.lif...nning
10月 21 13:16:13 opengauss systemd[1]: Started Jenkins Continuous Integration Server.
10月 21 13:16:14 opengauss jenkins[5851]: 2023-10-21 05:16:14.399+0000 [id=51]        INFO        h.m.Downlo...aller
10月 21 13:16:14 opengauss jenkins[5851]: 2023-10-21 05:16:14.399+0000 [id=51]        INFO        hudson.uti...pt #1
Hint: Some lines were ellipsized, use -l to show in full.
        3、访问Jenkins
访问地址:http://192.168.143.175:8080

查看密码并且输入密码:
            
            
              shell
              
              
            
          
          $ cat /var/lib/jenkins/secrets/initialAdminPassword
c251022ca0c2478794f84f67117810d9
        
选择安装推荐的插件,Jenkins 便会开始自动下载安装:

下载完之后会自动跳转到下一个页面:

填写信息点击保存并完成:

会跳转到另一个页面:

点击保存并完成:

点击开始使用 Jenkins:

4、插件的安装
使用推荐安装方式只能帮我们安装一部分最为常用的插件,有某些插件如 maven 等还是需要我们手动去安装的。
点击 "Manage Jenkins" --> "插件管理":




在这里可以看到我们需要的插件,按需下载即可。
5、卸载Jenkins
            
            
              shell
              
              
            
          
          # rpm卸载Jenkins
rpm -e jenkins
# 检查是否卸载成功
rpm -ql jenkins
# 彻底删除残留文件
find / -iname jenkins | xargs -n 1000 rm -rf
        6、Jenkins全局配置
需要配置的有 jdk、git、maven 工具。
6.1 JDK安装
            
            
              shell
              
              
            
          
          # 下载地址
# http://www.oracle.com/technetwork/java/javase/downloads/index.html
# 使用的版本
# jdk-8u212-linux-x64.tar.gz
# 1、解压
$ tar -zxvf jdk-8u212-linux-x64.tar.gz
# 2、重命名
$ mv jdk1.8.0_212 jdk1.8
# 3、添加环境变量
$ vim /etc/profile
export JAVA_HOME=/home/zhangshixing/java/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=.:${JAVA_HOME}/bin:$PATH
# 4、生效
$ source /etc/profile 
# 5、查看版本
$ java -version
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
# 6、查看路径
$ which java
/home/zhangshixing/java/jdk1.8/bin/java
        6.2 git安装
            
            
              shell
              
              
            
          
          # 使用yum安装
$ yum -y install git
$ git --version
        
            
            
              bash
              
              
            
          
          # 使用安装包安装:
# 1、下载安装包
# https://mirrors.edge.kernel.org/pub/software/scm/git/
wget -O git-2.22.0.tar.gz https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.20.0.tar.gz
# 2、解压安装包
$ tar -zxvf git-2.22.0.tar.gz
# 3、进入解压后的文件夹
$ cd git-2.22.0
# 4、安装需要的依赖
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
# 5、在安装编译源码所需依赖的时候,yum会自动帮你安装git,这时候你需要先卸载这个旧版的git
$ yum -y remove git
# 6、编译git源码
$ make prefix=/usr/local/git all
# 7、安装git至/usr/local/git路径
$ make prefix=/usr/local/git install
# 8、配置环境变量
$ vim /etc/profile 
$ export PATH=$PATH:/usr/local/git/bin
# 9、使配置文件生效
$ source /etc/profile
# 10、查看git是版本
$ git --version
git version 2.22.0
# 11、查看路径
$ which git
/usr/local/git/bin/git
        6.3 Maven安装
            
            
              shell
              
              
            
          
          # 下载地址
# https://dlcdn.apache.org/maven/maven-3
# 使用的版本
# apache-maven-3.3.9-bin.tar.gz
# 1、解压
$ tar -zxvf apache-maven-3.3.9-bin.tar.gz
# 2、创建maven资源库目录
$ mkdir -p /home/zhangshixing/maven/m2/repository
# 3、编辑settings.xml文件
$ cd /home/zhangshixing/maven/apache-maven-3.3.9/conf
$ vim settings.xml
# 将原文件内容全部删除,添加新的配置内容
$ :1,.d
# 4、新的配置内容
<?xml version="1.0" encoding="UTF-8"?>
<settings
    xmlns="http://maven.apache.org/SETTINGS/1.2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
    <localRepository>/home/zhangshixing/maven/m2/repository</localRepository>
    <pluginGroups></pluginGroups>
    <proxies></proxies>
    <servers></servers>
    <mirrors>
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
    </mirrors>
    <profiles></profiles>
</settings>
# 5、添加环境变量
$ vim /etc/profile
MAVEN_HOME=/home/zhangshixing/maven/apache-maven-3.3.9
PATH=$MAVEN_HOME/bin:$PATH
export MAVEN_HOME PATH
# 6、重新加载配置文件
$ source /etc/profile
# 7、查看版本
$ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /home/zhangshixing/maven/apache-maven-3.3.9
Java version: 1.8.0_212, vendor: Oracle Corporation
Java home: /home/zhangshixing/java/jdk1.8/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
# 8、查看路径
$ which mvn
/home/zhangshixing/maven/apache-maven-3.3.9/bin/mvn
        6.4 进行配置
点击 "Manage Jenkins" --> "Tools":




全部配置完成之后,点击保存、点击应用。
7、新建git仓库并上传代码

8、任务的创建与执行
登入 Jenkins,点击 "新建 Item",输入任务名称并选择构建一个多配置项目;


点击确定,之后我们作出如下配置:



点击保存:

返回面板,点击按钮执行此任务:

执行结果:

一个简单的自动化部署应用就完成了。
9、Jenkins通过脚本的方式运行mvn命令不识别的处理方式
如果我们进行如下的配置:

则会报如下的错误:
            
            
              shell
              
              
            
          
          /tmp/jenkins8798212945672749251.sh:行1: mvn: 未找到命令
        解决方法:把 maven 的 mvn 弄个快捷方式到sbin下就可以解决:
            
            
              shell
              
              
            
          
          ln -s $MAVEN_HOME/bin/mvn /usr/sbin/mvn
        10、配置git凭据
修改 Git 配置:

点击添加:

输入相关信息并且点击添加:

重新选择:

保存然后重新运行。
11、配置应用服务器信息
应用服务器,就是将来 Jenkins 将代码构建成 jar 包后,要上传的服务器的信息(地址、用户名以及密码)。
首先安装 Publish Over SSH 插件:

然后进行配置:

用户名密码方式:


密钥方式:
            
            
              shell
              
              
            
          
          # 在目标服务器上执行,也就是需要上传目录的服务器
# 生成rsa密钥,回车
$ ssh-keygen -t rsa
# 把公钥内容追加到认证文件中
$ cat id_rsa.pub >> authorized_keys
# 授权
chmod 700 /root/.ssh
chmod 700 /root/.ssh/id_rsa
chmod 700 /root/.ssh/id_rsa.pub
chmod 600 authorized_keys
$ vim /etc/ssh/sshd_config
PemitRootLogin yes
# 重启
$ service sshd restart
        

点击保存。
在项目中进行配置打包好的文件进行上传:

            
            
              shell
              
              
            
          
          # 目标服务器上执行
$ pwd
/opt/data
$ ls
jenkins_demo-0.0.1-SNAPSHOT.jar
        我们可以在上传完安装包之后执行一个部署脚本:
            
            
              shell
              
              
            
          
          # /opt/data/deploy.sh
#!/bin/bash
export JAVA_HOME=/home/zhangshixing/java/jdk1.8
export PATH=$JAVA_HOME/bin:$PATH
JAR_PATH=/opt/data
JARFILE=jenkins_demo-0.0.1-SNAPSHOT.jar
cd $JAR_PATH
ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9
java -jar $JARFILE > out.log &
if [ $? = 0 ];then
        sleep 30
        tail -n 50 out.log
fi
        修改项目中的执行命令:

重新运行,然后访问,看安装包是否启动:
            
            
              shell
              
              
            
          
          $ curl -X GET http://192.168.143.175:9999/hello
Hello World!
        
            
            
              shell
              
              
            
          
          $ pwd
/opt/data
$ ls
deploy.sh  jenkins_demo-0.0.1-SNAPSHOT.jar  out.log
        我们可以看到程序正常启动,并且可以正常访问。
12、自动构建
好了,现在我们的项目还不是自动构建,也就是当我们向 Gitee 上的代码仓库提交代码之后,并不会触发 Jenkins
的自动构建,得我们手动点击构建按钮,接下来我们再来继续配置,实现自动触发构建。
为了实现自动触发构建,我们需要修改两个地方。
12.1 安装Gitee插件

12.2 修改Jenkins
首先在 Jenkins 的当前项目中,配置一下触发构建的规则:


大家注意,在网页上 Jenkins 已经给出了将来要配置的 Webhook 的地址了,大家直接拷贝该地址即可。
            
            
              shell
              
              
            
          
          # webhook地址
http://192.168.143.175:8080/gitee-project/first%20jenkins
# webhook密码
373930de602b51fad08a301b2aca8ab2
        12.3 配置Webhook
接下来在 Gitee 的项目中,配置 WebHook,在当前项目中,选择管理选项卡,左边菜单点击 WebHooks,然后
点击添加 WebHook。

我们这里的 192.168.143.175 不是公网IP,所以gitee上配置会有问题,这里只演示配置方式。
配置之后我们可以点击测试看是否配置成功。
12.4 修改代码push代码
push代码之后就会触发Jenkins自动打包部署。