背景
- 在實際開發(fā)中铣焊,我們經(jīng)常要一邊開發(fā)一邊測試,當(dāng)然這里說的測試并不是程序員對自己代碼的單元測試罕伯,而是同組程序員將代碼提交后曲伊,由測試人員測試;
- 前后端分離后追他,經(jīng)常會修改接口坟募,然后重新部署岛蚤;這些情況都會涉及到頻繁的打包部署;
手動打包常規(guī)步驟:
- git commit + git push 提交代碼
- 問一下同組小伙伴有沒有要提交的代碼
- 拉取代碼并打包(war包懈糯,或者jar包)
- 上傳到Linux服務(wù)器
- 查看當(dāng)前程序是否在運行
- 關(guān)閉當(dāng)前程序
- 啟動新的jar包
- 觀察日志看是否啟動成功
- 如果有同事說涤妒,自己還有代碼沒有提交......再次重復(fù)1到8的步驟。
基于以上的痛點赚哗,有一種工具能夠?qū)崿F(xiàn)届腐,將代碼提交到git后就自動打包部署勒,答案是肯定的:現(xiàn)在這里主要介紹jenkins
當(dāng)然除了Jenkins以外蜂奸,也還有其他的工具可以實現(xiàn)自動化部署犁苏,如Hudson、gitlab CI/CD等扩所。只是Jenkins相對來說围详,使用得更廣泛。
文章結(jié)構(gòu):
Jenkins服務(wù)器搭建及基本配置
簡介
Jenkins是一個開源軟件項目祖屏,是基于Java開發(fā)的一種持續(xù)集成工具助赞,用于監(jiān)控持續(xù)重復(fù)的工作,旨在提供一個開放易用的軟件平臺袁勺,使軟件的持續(xù)集成變成可能雹食。
Jenkins自動化部署實現(xiàn)原理
Jenkins部署環(huán)境
基本環(huán)境
jdk環(huán)境,Jenkins是java語言開發(fā)的期丰,因需要jdk環(huán)境群叶。
git/svn客戶端,因一般代碼是放在git/svn服務(wù)器上的钝荡,我們需要拉取代碼街立。
maven客戶端,因一般java程序是由maven工程埠通,需要maven打包赎离,當(dāng)然也有其他打包方式,如:gradle
以上是自動化部署java程序jenkins需要的基本環(huán)境端辱,請自己提前安裝好梁剔,下面著重講解Jenkins的安裝部署配置。
Jenkins安裝
下載安裝包jenkins.war舞蔽;
在安裝包根路徑下荣病,運行命令 java -jar jenkins.war --httpPort=8080,(linux環(huán)境喷鸽、Windows環(huán)境都一樣)众雷;
打開瀏覽器進入鏈接 http://localhost:8080.
填寫初始密碼灸拍,激活系統(tǒng)
- 進入插件安裝選擇
這里建議選擇做祝,推薦安裝的插件砾省,保證基本常用的功能可以使用。
中文版
英文版
選擇后混槐,進入插件安裝頁面
[圖片上傳失敗...(image-bc838b-1625587098674)]-
設(shè)置初始用戶和密碼
-
進入系統(tǒng)编兄,安裝完成
Jenkins基本配置
系統(tǒng)初始化配置
- Configure System (系統(tǒng)設(shè)置)
在系統(tǒng)設(shè)置這里,我們只需要設(shè)置最后面的一項声登,配置遠程服務(wù)器地址狠鸳,
即我們代碼最終運行的服務(wù)器地址信息,就像我們之前手動部署時使用xshell登錄Linux服務(wù)器一樣悯嗓,
當(dāng)然這里是可以配置多臺遠程Linux服務(wù)器的件舵,配置完成后點擊保存即可,為后面我們配置自動化部署做準備脯厨,配置如下圖
- Configure Global Security (全局安全配置)
配置用戶相關(guān)的權(quán)限
配置鉤子程序(當(dāng)用代碼更新時通知)訪問權(quán)限铅祸,避免報403錯誤
默認是勾選上了的,這里去掉勾選
- Global Tool Configuration (全局工具配置 )
配置maven的全局settings路徑
配置jdk
配置git
配置maven的安裝路徑
配置必要插件
主要是檢查如下這兩個插件是否已安裝
- 插件1:Publish over SSH
- 插件2:Deploy to container Plugin
Jenkins自動化部署
我們配置一個自動化部署的的java程序(springBoot+maven+gitHub)合武,基本必要配置就差不多了临梗,后面配置過程中如果需要在配置。
Jenkins服務(wù)器上創(chuàng)建項目和配置
大體步驟:General(基礎(chǔ)配置)--》源碼管理--》構(gòu)建觸發(fā)器--》構(gòu)建環(huán)境--》構(gòu)建--》構(gòu)建后操作
- 創(chuàng)建一個工程
- General(基礎(chǔ)配置)
僅需填寫標準部分稼跳,其他可不填寫
- 源碼管理
上圖中點擊“添加”按鈕添加一組賬號和密碼
- 構(gòu)建觸發(fā)器
如上圖:當(dāng)前項目的回調(diào)地址為:
http://localhost:8080/job/jenkinsSpringBootDemo/build?token=token_demo2
只要執(zhí)行這個地址(在瀏覽器上訪問改地址)盟庞,該項目就會發(fā)起一次構(gòu)建項目,即拉取代碼打包部署操作汤善,在實際中什猖,是由git服務(wù)器回調(diào)該地址。
構(gòu)建環(huán)境(無需配置)
-
構(gòu)建
-
構(gòu)建后操作
- 構(gòu)建后操作的意思是红淡,jar打包好后卸伞,要將jar發(fā)送到哪里去,發(fā)送后去和啟動等锉屈。
- 這里需要提前在需要部署的服務(wù)器上配置好路徑荤傲,寫好啟動和停止項目的腳本,并設(shè)置為可以執(zhí)行的腳本颈渊,
- 其實就是我們平時在Linux上手動部署項目操作的腳本遂黍。
案例中給出的start.sh腳本如下:
#!/bin/bash
export JAVA_HOME=/usr/java/jdk1.8.0_131
echo ${JAVA_HOME}
echo 'Start the program : demo2-0.0.1-SNAPSHOT.jar'
chmod 777 /home/ldp/app/demo2-0.0.1-SNAPSHOT.jar
echo '-------Starting-------'
cd /home/ldp/app/
nohup ${JAVA_HOME}/bin/java -jar demo2-0.0.1-SNAPSHOT.jar &
echo 'start success'
案例中給出的stop.sh腳本如下:
#!/bin/bash
echo "Stop Procedure : demo2-0.0.1-SNAPSHOT.jar"
pid=`ps -ef | grep java | grep demo2-0.0.1-SNAPSHOT.jar | awk '{print $2}'`
echo 'old Procedure pid:'$pid
if [ -n "$pid" ]
then
kill -9 $pid
fi
Linux服務(wù)器配置
在Linux 服務(wù)上,上傳上文中的兩個腳本俊嗽,用于啟動和停止
GitHub服務(wù)器配置
在GitHub服務(wù)器上的指定項目里面配置上文中提到的回調(diào)地址
特別注意:為了保證回調(diào)地址網(wǎng)可以使用雾家,
所以,下面配置的是外網(wǎng)映射地址绍豁。
可以參考:官方文檔