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