Linux下Jenkins自动化部署SpringBoot应用

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自动打包部署。

相关推荐
神即道 道法自然 如来1 分钟前
如何在 Jenkins 中配置邮件通知?
java·运维·jenkins
Fan1 天前
Elasticsearch 下载安装及使用总结
大数据·elasticsearch·jenkins
TO_ZRG1 天前
使用jenkins打包unity工程
运维·unity·jenkins
liujiangxu1 天前
jenkins声明式流水线语法详解
运维·自动化·jenkins
周全全1 天前
Elasticsearch 检索优化:停用词的应用
大数据·elasticsearch·jenkins
神即道 道法自然 如来3 天前
Jenkins怎么设置每日自动执行构建任务?
运维·jenkins
寻爱的希斯克利夫3 天前
tomcat 配置jenkins_home 目录
servlet·tomcat·jenkins
不惑_3 天前
Logstash 安装与部署(无坑版)
运维·jenkins
Lill_bin5 天前
ElasticSearch底层原理解析
大数据·分布式·elasticsearch·搜索引擎·zookeeper·云原生·jenkins
爱吃香蕉的阿豪5 天前
828华为云征文|Flexus X实例Docker+Jenkins+gitee实现CI/CD自动化部署-解放你的双手~
ci/cd·docker·gitee·华为云·jenkins