Linux下Jenkins自動(dòng)化部署SpringBoot應(yīng)用
1、 Jenkins介紹
官方網(wǎng)址:https://www.jenkins.io/
2、安裝Jenkins
2.1 centos下命令行安裝
訪問(wèn)官方,點(diǎn)擊文檔:
點(diǎn)擊 Installing Jenkins:
點(diǎn)擊 Linux:
選擇 Red Hat/Alma/Rocky,就可以看到相關(guān)的安裝命令:
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
# 啟動(dòng)
sudo systemctl daemon-reload
sudo systemctl enable jenkins
sudo systemctl start jenkins
sudo systemctl status jenkins
其它版本的安裝請(qǐng)參考:https://pkg.jenkins.io/redhat-stable/
# 本文安裝
# 下載鏡像
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 環(huán)境
yum install java-11-openjdk
# 安裝 Jenkins
yum install jenkins
# 啟動(dòng)
systemctl daemon-reload
systemctl enable jenkins
systemctl start jenkins
systemctl status jenkins
2.2 錯(cuò)誤處理
2.2.1 錯(cuò)誤1
如果報(bào)錯(cuò):
$ 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'.
請(qǐng)使用下面的命令:
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 錯(cuò)誤2
如果報(bào)錯(cuò):
$ 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
正在解決依賴關(guān)系
--> 正在檢查事務(wù)
---> 軟件包 jenkins.noarch.0.2.414.3-1.1 將被 安裝
--> 解決依賴關(guān)系完成
依賴關(guān)系解決
=====================================================================================================================
Package 架構(gòu) 版本 源 大小
=====================================================================================================================
正在安裝:
jenkins noarch 2.414.3-1.1 jenkins 85 M
事務(wù)概要
=====================================================================================================================
安裝 1 軟件包
總計(jì):85 M
安裝大?。?5 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 的公鑰尚未安裝
請(qǐng)使用下面的命令:
$ yum install jenkins --nogpgcheck
2.3 啟動(dòng)狀態(tài)
# 查看啟動(dòng)狀態(tài)
# 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、訪問(wèn)Jenkins
訪問(wèn)地址:http://192.168.143.175:8080
查看密碼并且輸入密碼:
$ cat /var/lib/jenkins/secrets/initialAdminPassword
c251022ca0c2478794f84f67117810d9
選擇安裝推薦的插件,Jenkins 便會(huì)開(kāi)始自動(dòng)下載安裝:
下載完之后會(huì)自動(dòng)跳轉(zhuǎn)到下一個(gè)頁(yè)面:
填寫(xiě)信息點(diǎn)擊保存并完成:
會(huì)跳轉(zhuǎn)到另一個(gè)頁(yè)面:
點(diǎn)擊保存并完成:
點(diǎn)擊開(kāi)始使用 Jenkins:
4、插件的安裝
使用推薦安裝方式只能幫我們安裝一部分最為常用的插件,有某些插件如 maven 等還是需要我們手動(dòng)去安裝的。
點(diǎn)擊 “Manage Jenkins” --> “插件管理”:
在這里可以看到我們需要的插件,按需下載即可。
5、卸載Jenkins
# 在卸載Jenkins之前,首先停止Jenkins服務(wù)
$ systemctl stop jenkins
# 禁止其在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行
$ systemctl disable jenkins
# 卸載Jenkins軟件包
$ yum clean all
$ yum remove jenkins
# 刪除Jenkins相關(guān)目錄和文件
$ rm -r /var/lib/jenkins
$ rm -rf /etc/default/jenkins
$ rm -rf /var/cache/jenkins
$ rm -rf /var/run/jenkins
# 刪除Jenkins配置文件和日志目錄
$ rm -r /etc/sysconfig/jenkins
$ rm -r /var/log/jenkins
# 刪除Jenkins用戶和用戶組
$ userdel jenkins
$ groupdel jenkins
# 刪除Jenkins的YUM源文件
$ rm /etc/yum.repos.d/jenkins.repo
# 刪除Jenkins的系統(tǒng)服務(wù)配置文件
$ rm /usr/lib/systemd/system/jenkins.service
$ rm /etc/systemd/system/jenkins.service
# 刪掉相關(guān)安裝目錄
$ rm -rf /root/.jenkins/
# 刪掉war包
$ rm -rf /webapps/jenkinsapp/
# 刪掉剩余相關(guān)
$ rm -rf /usr/lib/firewalld/services/jenkins.xml
$ rm -rf /var/cache/yum/x86_64/7/jenkins
$ rm -f /var/lib/yum/repos/x86_64/7/jenkins
# 徹底刪除殘留文件
$ find / -iname jenkins | xargs -n 1000 rm -rf
6、Jenkins全局配置
需要配置的有 jdk、git、maven 工具。
6.1 JDK安裝
# 下載地址
# 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、添加環(huán)境變量
$ 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安裝
# 使用yum安裝
$ yum -y install git
$ git --version
# 使用安裝包安裝:
# 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、進(jìn)入解壓后的文件夾
$ cd git-2.22.0
# 4、安裝需要的依賴
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
# 5、在安裝編譯源碼所需依賴的時(shí)候,yum會(huì)自動(dòng)幫你安裝git,這時(shí)候你需要先卸載這個(gè)舊版的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、配置環(huán)境變量
$ 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安裝
# 下載地址
# 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、創(chuàng)建maven資源庫(kù)目錄
$ mkdir -p /home/zhangshixing/maven/m2/repository
# 3、編輯settings.xml文件
$ cd /home/zhangshixing/maven/apache-maven-3.3.9/conf
$ vim settings.xml
# 將原文件內(nèi)容全部刪除,添加新的配置內(nèi)容
$ :1,.d
# 4、新的配置內(nèi)容
<?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、添加環(huán)境變量
$ 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 進(jìn)行配置
點(diǎn)擊 “Manage Jenkins” --> “Tools”:
全部配置完成之后,點(diǎn)擊保存、點(diǎn)擊應(yīng)用。
7、新建git倉(cāng)庫(kù)并上傳代碼
8、任務(wù)的創(chuàng)建與執(zhí)行
登入 Jenkins,點(diǎn)擊 “新建 Item”,輸入任務(wù)名稱并選擇構(gòu)建一個(gè)多配置項(xiàng)目;
點(diǎn)擊確定,之后我們作出如下配置:
點(diǎn)擊保存:
返回面板,點(diǎn)擊按鈕執(zhí)行此任務(wù):
執(zhí)行結(jié)果:
一個(gè)簡(jiǎn)單的自動(dòng)化部署應(yīng)用就完成了。
9、Jenkins通過(guò)腳本的方式運(yùn)行mvn命令不識(shí)別的處理方式
如果我們進(jìn)行如下的配置:
則會(huì)報(bào)如下的錯(cuò)誤:
/tmp/jenkins8798212945672749251.sh:行1: mvn: 未找到命令
解決方法:把 maven 的 mvn 弄個(gè)快捷方式到sbin下就可以解決:
ln -s $MAVEN_HOME/bin/mvn /usr/sbin/mvn
10、配置git憑據(jù)
修改 Git 配置:
點(diǎn)擊添加:
輸入相關(guān)信息并且點(diǎn)擊添加:
重新選擇:
保存然后重新運(yùn)行。
11、配置應(yīng)用服務(wù)器信息
應(yīng)用服務(wù)器,就是將來(lái) Jenkins 將代碼構(gòu)建成 jar 包后,要上傳的服務(wù)器的信息(地址、用戶名以及密碼)。
首先安裝 Publish Over SSH 插件:
然后進(jìn)行配置:
Publish Over SSH各個(gè)參數(shù)介紹
-
Passphrase
:使用用戶名、密碼 SSH 登錄時(shí),這里輸入用戶名密碼。使用私鑰登錄時(shí),這里是私鑰的密碼。
-
Path to key
:要使用的 SSH 私鑰在Jenkins主機(jī)上的路徑。路徑可以是絕對(duì)路徑,也可以是相對(duì)于JENKINS_HOME
目錄的路徑。 -
Key
:私鑰 -
Disable exec
:移除該插件執(zhí)行命令的能力。如果選中該選項(xiàng),則SSH Servers
的高級(jí)部分中的Disable exec
選項(xiàng)將被忽略。 -
Name
:名稱。 -
Hostname
:服務(wù)器 IP。 -
Username
:登錄服務(wù)器用戶名。 -
Remote Directory
:登錄服務(wù)器后的根目錄,后面 Jenkins默認(rèn)發(fā)送制品到此目錄下。
用戶名密碼方式:
密鑰方式:
# 在目標(biāo)服務(wù)器上執(zhí)行,也就是需要上傳目錄的服務(wù)器
# 生成rsa密鑰,回車
$ ssh-keygen -t rsa
# 把公鑰內(nèi)容追加到認(rèn)證文件中
$ cat id_rsa.pub >> authorized_keys
# 授權(quán)
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
點(diǎn)擊保存。
在項(xiàng)目中進(jìn)行配置打包好的文件進(jìn)行上傳:
# 目標(biāo)服務(wù)器上執(zhí)行
$ pwd
/opt/data
$ ls
jenkins_demo-0.0.1-SNAPSHOT.jar
我們可以在上傳完安裝包之后執(zhí)行一個(gè)部署腳本:
# /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
修改項(xiàng)目中的執(zhí)行命令:
重新運(yùn)行,然后訪問(wèn),看安裝包是否啟動(dòng):
$ curl -X GET http://192.168.143.175:9999/hello
Hello World!
$ pwd
/opt/data
$ ls
deploy.sh jenkins_demo-0.0.1-SNAPSHOT.jar out.log
我們可以看到程序正常啟動(dòng),并且可以正常訪問(wèn)。
12、自動(dòng)構(gòu)建
好了,現(xiàn)在我們的項(xiàng)目還不是自動(dòng)構(gòu)建,也就是當(dāng)我們向 Gitee 上的代碼倉(cāng)庫(kù)提交代碼之后,并不會(huì)觸發(fā) Jenkins
的自動(dòng)構(gòu)建,得我們手動(dòng)點(diǎn)擊構(gòu)建按鈕,接下來(lái)我們?cè)賮?lái)繼續(xù)配置,實(shí)現(xiàn)自動(dòng)觸發(fā)構(gòu)建。
為了實(shí)現(xiàn)自動(dòng)觸發(fā)構(gòu)建,我們需要修改兩個(gè)地方。
12.1 安裝Gitee插件
12.2 修改Jenkins
首先在 Jenkins 的當(dāng)前項(xiàng)目中,配置一下觸發(fā)構(gòu)建的規(guī)則:
大家注意,在網(wǎng)頁(yè)上 Jenkins 已經(jīng)給出了將來(lái)要配置的 Webhook 的地址了,大家直接拷貝該地址即可。
# webhook地址
http://192.168.143.175:8080/gitee-project/first%20jenkins
# webhook密碼
373930de602b51fad08a301b2aca8ab2
12.3 配置Webhook
接下來(lái)在 Gitee 的項(xiàng)目中,配置 WebHook,在當(dāng)前項(xiàng)目中,選擇管理選項(xiàng)卡,左邊菜單點(diǎn)擊 WebHooks,然后
點(diǎn)擊添加 WebHook。
我們這里的 192.168.143.175 不是公網(wǎng)IP,所以gitee上配置會(huì)有問(wèn)題,這里只演示配置方式。
配置之后我們可以點(diǎn)擊測(cè)試看是否配置成功。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-735040.html
12.4 修改代碼push代碼
push代碼之后就會(huì)觸發(fā)Jenkins自動(dòng)打包部署。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-735040.html
到了這里,關(guān)于Linux下Jenkins自動(dòng)化部署SpringBoot應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!