使用Jenkins部署springboot

Jenkins 是 Devops 神器,本篇文章介紹如何安裝和使用 Jenkins 部署 Spring Boot 項(xiàng)目

Jenkins 搭建、部署分為四個(gè)步驟;

第一步,Jenkins 安裝

第二步,插件安裝和配置

第三步,Push SSH

第四步,部署項(xiàng)目

第一步 ,Jenkins 安裝

準(zhǔn)備環(huán)境:JDK:1.8? ? ? Jenkins:2.83? ? ? Centos:7.3? ? ? ? maven 3.5

Jdk 默認(rèn)已經(jīng)安裝完成

配置 Maven

版本要求 Maven3.5.0

軟件下載

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz

安裝

## 解壓

tar vxf apache-maven-3.5.0-bin.tar.gz

## 移動(dòng)

mv apache-maven-3.5.0 ?/usr/local/maven3

修改環(huán)境變量, 在/etc/profile中添加以下幾行

MAVEN_HOME=/usr/local/maven3

export MAVEN_HOMEexport

PATH=${PATH}:${MAVEN_HOME}/bin

記得執(zhí)行source /etc/profile使環(huán)境變量生效。

驗(yàn)證 最后運(yùn)行mvn -v驗(yàn)證maven是否安裝成功

配置防護(hù)墻

關(guān)閉防護(hù)墻

#centos7

systemctl stop? ?firewalld.service

==============================

#以下為:centOS 6.5關(guān)閉防火墻步驟

#關(guān)閉命令:??

service iptables stop

#永久關(guān)閉防火墻:

chkconfig iptables off

兩個(gè)命令同時(shí)運(yùn)行,運(yùn)行完成后查看防火墻關(guān)閉狀態(tài)

service iptables status

Jenkins 安裝

下載

cd/opt

wget http://mirrors.jenkins.io/war/2.83/jenkins.war

啟動(dòng)服務(wù)

java-jarjenkins.war &

Jenkins 就啟動(dòng)成功了!它的war包自帶Jetty服務(wù)器

第一次啟動(dòng) Jenkins 時(shí),出于安全考慮,Jenkins 會(huì)自動(dòng)生成一個(gè)隨機(jī)的按照口令。注意控制臺(tái)輸出的口令,復(fù)制下來(lái),然后在瀏覽器輸入密碼:

INFO:

***************************************************************************************************************************************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.Please use the following password to proceed to installation:0cca37389e6540c08ce6e4c96f46da0fThis may also be found at: /root/.jenkins/secrets/initialAdminPassword

***************************************************************************************************************************************************************************************

訪問(wèn) 瀏覽器訪問(wèn):http://localhost:8080/

輸入:0cca37389e6540c08ce6e4c96f46da0f

進(jìn)入用戶自定義插件界面,建議選擇安裝官方推薦插件,因?yàn)榘惭b后自己也得安裝:

接下來(lái)是進(jìn)入插件安裝進(jìn)度界面:

插件一次可能不會(huì)完全安裝成功,可以點(diǎn)擊Retry再次安裝。直到全部安裝成功

等待一段時(shí)間之后,插件安裝完成,配置用戶名密碼:

輸入:admin/admin

系統(tǒng)管理-》全局工具配置 jdk路徑,

第二步,插件安裝和配置

有很多插件都是選擇的默認(rèn)的安裝的,所以現(xiàn)在需要我們安裝的插件不多,Git plugin(使用svn的話下載subversion plug-in) 和 Maven Integration plugin,publish over SSH。

插件安裝:系統(tǒng)管理 > 插件管理 > 可選插件,勾選需要安裝的插件,點(diǎn)擊直接安裝或者下載重啟后安裝

配置全局變量

系統(tǒng)管理 > 全局工具配置

JDK

配置本地 JDK 的路徑,去掉勾選自動(dòng)安裝

Maven

配置本地maven的路徑,去掉勾選自動(dòng)安裝

其它內(nèi)容可以根據(jù)自己的情況選擇安裝。

使用密鑰方式登錄目標(biāo)發(fā)布服務(wù)器

ssh 的配置可使用密鑰,也可以使用密碼,這里我們使用密鑰來(lái)配置,在配置之前先配置好jenkins服務(wù)器和應(yīng)用服務(wù)器的密鑰認(rèn)證?Jenkins服務(wù)器上生成密鑰對(duì),使用ssh-keygen -t rsa命令

輸入下面命令 一直回車,一個(gè)矩形圖形出現(xiàn)就說(shuō)明成功,在~/.ssh/下會(huì)有私鑰id_rsa和公鑰id_rsa.pub

ssh -keygen -t rsa

jenkins服務(wù)器的公鑰id_rsa.pub中的內(nèi)容復(fù)制到應(yīng)用服務(wù)器?的~/.ssh/下的?authorized_keys文件

ssh-copy-id-iid_rsa.pub 192.168.0.xx

chmod 644 authorized_keys

應(yīng)用服務(wù)器上重啟 ssh 服務(wù),service sshd restart現(xiàn)在 Jenkins 服務(wù)器可免密碼直接登陸應(yīng)用服務(wù)器

之后在用 ssh B嘗試能否免密登錄 B 服務(wù)器,如果還是提示需要輸入密碼,則有以下原因

a. 非 root 賬戶可能不支持 ssh 公鑰認(rèn)證(看服務(wù)器是否有限制)

b. 傳過(guò)來(lái)的公鑰文件權(quán)限不夠,可以給這個(gè)文件授權(quán)下 chmod 644 authorized_keys

c. 使用 root 賬戶執(zhí)行 ssh-copy-id -i ~/.ssh/id_rsa.pub?這個(gè)指令的時(shí)候如果需要輸入密碼則要配置sshd_config

vi? /etc/ssh/sshd_config

#內(nèi)容

PermitRootLogin no

修改完后要重啟 sshd 服務(wù)

service sshd restart

最后,如果可以 SSH IP 免密登錄成功說(shuō)明 SSH 公鑰認(rèn)證成功。

上面這種方式比較復(fù)雜,其實(shí)在 Jenkins 后臺(tái)直接添加操作即可,參考下面方式

使用用戶名+密碼方式登錄目標(biāo)發(fā)布服務(wù)器

(1)點(diǎn)擊”高級(jí)”展開配置

(2)配置SSH的登陸密碼

配置完成后可點(diǎn)擊“Test Configuration”測(cè)試到目標(biāo)主機(jī)的連接,出現(xiàn)”success“則成功連接,如果有多臺(tái)應(yīng)用服務(wù)器,可以點(diǎn)擊”增加“,配置多個(gè)“SSH Servers” 點(diǎn)擊“保存”以保存配置。

第三步,Push SSH

系統(tǒng)管理 > 系統(tǒng)設(shè)置

選擇 Publish over SSH

Passphrase 不用設(shè)置 Path to key 寫上生成的ssh路徑:/root/.ssh/id_rsa

下面的 SSH Servers 是重點(diǎn)

Name 隨意起名代表這個(gè)服務(wù),待會(huì)要根據(jù)它來(lái)選擇

Hostname 配置應(yīng)用服務(wù)器的地址

Username 配置 linux 登陸用戶名

Remote Directory 不填

點(diǎn)擊下方增加可以添加多個(gè)應(yīng)用服務(wù)器的地址

第四步,部署項(xiàng)目

首頁(yè)點(diǎn)擊新建:輸入項(xiàng)目名稱

下方選擇構(gòu)建一個(gè) Maven 項(xiàng)目,點(diǎn)擊確定。

勾選丟棄舊的構(gòu)建,選擇是否備份被替換的舊包。我這里選擇備份最近的10個(gè)

源碼管理,選擇 SVN,配置 SVN 相關(guān)信息,點(diǎn)擊 add 可以輸入 SVN 的賬戶和密碼

SVN 地址:http://192.168.0.xx/svn/xxx@HEAD,@HEAD意思取最新版本

構(gòu)建環(huán)境中勾選“Add timestamps to the Console Output”,代碼構(gòu)建的過(guò)程中會(huì)將日志打印出來(lái)

在 Build 中輸入打包前的 mvn 命令,如:

clean? install? -Dmaven.test.skip=true? ?-Ptest

意思是:排除測(cè)試的包內(nèi)容,使用后綴為 test 的配置文件(如果你的項(xiàng)目是單環(huán)境可以把-Ptest去掉)。

Post Steps 選擇 Run only if build succeeds

點(diǎn)擊Add post-build step,選擇 Send files or execute commands over SSH

Name 選擇上面配置的 Push SSH

Source files配置:target/xxx-0.0.1-SNAPSHOT.jar 項(xiàng)目jar包名 Remove prefix:target/ Remote directory:Jenkins-in/ 代碼應(yīng)用服務(wù)器的目錄地址, Exec command:Jenkins-in/xxx.sh 應(yīng)用服務(wù)器對(duì)應(yīng)的腳本。

需要在應(yīng)用服務(wù)器創(chuàng)建文件夾:Jenkins-in,在文件夾中復(fù)制一下腳本內(nèi)容:xxx.sh

DATE=$(date+%Y%m%d)

export JAVA_HOME PATH CLASSPATH

JAVA_HOME=/usr/java/jdk1.8.0_131

PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

DIR=/root/xxx

JARFILE=xxx-0.0.1-SNAPSHOT.jar

if [! -d $DIR/backup]; then

? mkdir-p $DIR/backup fi

cd $DIR

ps-ef | grep? $JARFILE? |? grep? -v? grep? |? awk? '{print $2}'? | xargs? kill? -? 9?

mv? $JARFILE? backup/$JARFILE$DATE

mv? -f? /root/Jenkins-in/$JARFILE.

java? -jar? $JARFILE > out.log? &

if? [$? = 0];? then

? ? ? ? sleep 30

? ? ? ? ? tail? ?-n? ?50? out.log? ?

fi

cd? backup/

ls? -lt? | awk? ?'NR>5{print $NF}'? |? xargs? ?rm? ?-rf

這段腳本的意思,就是 kill 舊項(xiàng)目,刪除舊項(xiàng)目,啟動(dòng)新項(xiàng)目,備份老項(xiàng)目。

全文完。

轉(zhuǎn)載:http://www.ityouknow.com/springboot/2017/11/11/spring-boot-jenkins.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。