不積跬步 ,無以至千里
本文是原創(chuàng)持續(xù)連載發(fā)布瘪匿,這篇主要是承接(Jenkins自動化部署篇一)的內(nèi)容害驹,親手搭建使用Publish Over SSH插件構(gòu)建項目實現(xiàn)遠(yuǎn)程自動化部署。如有文中有書寫或部署問題文捶,請留言指導(dǎo)修正,互相交流媒咳,共同進(jìn)步粹排,本人QQ:417213902。
一伟葫、使用Publish Over SSH插件構(gòu)建項目
1恨搓、原理說明
使用Publish Over SSH插件在Jenkins上發(fā)布,應(yīng)該適用于大部分環(huán)境筏养,比如多工程同時發(fā)布斧抱、多服務(wù)器同時發(fā)布等場景。其原理是Jenkins集成了Git渐溶、Maven將項目檢出辉浦、打包到Jenkins宿主服務(wù)器的工作空間中,再將需要發(fā)布的war包發(fā)布到應(yīng)用服務(wù)的臨時目錄下茎辐,然后通過該插件遠(yuǎn)程調(diào)用應(yīng)用服務(wù)器上的發(fā)布腳本宪郊,將臨時目錄下的war替換容器下的文件,從而達(dá)到自動化發(fā)布的效果拖陆。
2弛槐、原理實施
-
第一步 安裝Publish Over SSH插件
打開Jenkins頁面,點擊【系統(tǒng)管理】-【管理插件】-【已安裝】下搜索 關(guān)鍵字ssh依啰,出現(xiàn)下圖乎串,表示已經(jīng)安裝,若未出現(xiàn)速警,則去下載Publish Over SSH插件
再去【高級】中上傳插件叹誉。
image.png -
第二步 配置服務(wù)器間的秘鑰認(rèn)證
目的是Jenkins服務(wù)器與應(yīng)用服務(wù)器間通信時不需要再次輸入密碼
⑴ 在Jenkins服務(wù)器上生成密鑰對,使用ssh-keygen -t rsa命令
# cd ~
# ssh-keygen -t rsa 直接回車
# cd ~/.ssh/
# ll
image.png
出現(xiàn)id_rsa 和 id_rsa.pub 這兩個文件表示成功
image.png
⑵把生成的 id_rsa.pub 文件復(fù)制到應(yīng)用服務(wù)器上
# scp id_rsa.pub root@192.168.1.110:~/.ssh/
需要輸入110服務(wù)器的root密碼
文件復(fù)制成功
⑶驗證是否成功
# ssh root@192.168.1.110
應(yīng)該是無秘自動登錄闷旧,表示成功长豁,否則請重新檢查配置步驟 第三步 寫發(fā)布腳本
這是根據(jù)個人經(jīng)驗寫的簡單發(fā)布腳本,可以優(yōu)化的空間很大忙灼,但是也是可以實現(xiàn)完整的發(fā)布流程
#! /bin/bash
TOMCAT_HOME=/opt/soft/apache-tomcat-7.0.82
JAVA_HOME=/opt/soft/jdk1.8.0_112
TOMCAT_PORT=8080
WAR_HOME=/tmp/*.war
tomcat_pid=`ps -ef | grep 'tomcat' |grep -v 'grep' |awk '{print $2}'`
if [ -n "$tomcat_pid" ];
then
echo "tomcat pid now :" $tomcat_pid
$TOMCAT_HOME/bin/shutdown.sh
sleep 5
fi
#while [ -n "$tomcat_pid" ]
#do
# kill -9 $tomcat_pid
# sleep 5
# tomcat_pid="ps -ef | grep 'tomcat' |grep -v 'grep' |awk '{print $2}'"
# echo "scan tomcat pid :" $tomcat_pid
#done
echo "kill tomcat success !!!"
function fcopyFile(){
if [ -f "$1" ];then
echo "$1 exist"
cp -R $1 $TOMCAT_HOME/webapps
else
echo "$1 not exist"
fi
}
echo "deploy war to tomcat start !!!"
#ls "$WAR_HOME" >> $(date +%Y%m%d%H%M)_deploy_warName.text
fcopyFile "/tmp/dubbo-service.war"
fcopyFile "/tmp/dubbo-web.war"
echo "deploy war to tomcat end !!!"
$TOMCAT_HOME/bin/startup.sh
sleep 5
tomcat_pid=`ps -ef | grep 'tomcat' |grep -v 'grep' |awk '{print $2}'`
if [ ! -n "$tomcat_pid" ];
then
echo "start tomcat failed"
else
echo "start tomcat success"
fi
- 第四步 配置Jenkins
點擊【系統(tǒng)管理】-【系統(tǒng)設(shè)置】向下翻動找到【Publish over SSH】
配置如下匠襟,可指定多臺SSH Server
配置完成后,點擊 【Test Configuration】,出現(xiàn)success表示成功
-
第五步 構(gòu)建項目
點擊 【新建】選擇【構(gòu)建一個自由風(fēng)格的軟件項目】
配置源碼管理
image.png
配置Maven 構(gòu)建
配置構(gòu)建后操作(重點)
點擊 【增加構(gòu)建后操作步驟】選擇【Send build artifacts over SSH】
保存宅此,點擊【立即構(gòu)建】
應(yīng)用服務(wù)器上的臨時目錄
tomcat下的webapps目錄机错,已發(fā)布成功
好了,基于Publish Over SSH插件自動化發(fā)布已經(jīng)搭建好了父腕,我想有了這個例子作為前期輔助弱匪,大家腦洞應(yīng)該可以大開了吧!h盗痢萧诫!
其實Jenkins發(fā)布的方式有很多,大家還是要選擇適合自己項目枝嘶、公司的發(fā)布流程去搭建帘饶,祝大家學(xué)習(xí)愉快,天天進(jìn)步H悍觥<翱獭!
PS:本來準(zhǔn)備這一版竞阐,是開始解決架構(gòu)過程中的單點問題的缴饭,但是后來發(fā)現(xiàn)Jenkins篇一過于簡單,日常場景很多都不實用骆莹,所以決定寫了這篇颗搂。
后面還想再進(jìn)一步學(xué)習(xí)下Jenkins結(jié)合Ansible實現(xiàn)自動化部署和回滾,日常工作比較忙幕垦,還是得看時間咯6狻!先改!
2017-11-09 22:41:00