不積跬步 ,無以至千里
本文是原創持續連載發布,這篇主要是承接(Jenkins自動化部署篇一)的內容,親手搭建使用Publish Over SSH插件構建項目實現遠程自動化部署。如有文中有書寫或部署問題,請留言指導修正,互相交流,共同進步,本人QQ:417213902。
一、使用Publish Over SSH插件構建項目
1、原理說明
使用Publish Over SSH插件在Jenkins上發布,應該適用于大部分環境,比如多工程同時發布、多服務器同時發布等場景。其原理是Jenkins集成了Git、Maven將項目檢出、打包到Jenkins宿主服務器的工作空間中,再將需要發布的war包發布到應用服務的臨時目錄下,然后通過該插件遠程調用應用服務器上的發布腳本,將臨時目錄下的war替換容器下的文件,從而達到自動化發布的效果。
2、原理實施
-
第一步 安裝Publish Over SSH插件
打開Jenkins頁面,點擊【系統管理】-【管理插件】-【已安裝】下搜索 關鍵字ssh,出現下圖,表示已經安裝,若未出現,則去下載Publish Over SSH插件
再去【高級】中上傳插件。
image.png -
第二步 配置服務器間的秘鑰認證
目的是Jenkins服務器與應用服務器間通信時不需要再次輸入密碼
⑴ 在Jenkins服務器上生成密鑰對,使用ssh-keygen -t rsa命令
# cd ~
# ssh-keygen -t rsa 直接回車
# cd ~/.ssh/
# ll
image.png
出現id_rsa 和 id_rsa.pub 這兩個文件表示成功
image.png
⑵把生成的 id_rsa.pub 文件復制到應用服務器上
# scp id_rsa.pub root@192.168.1.110:~/.ssh/
需要輸入110服務器的root密碼
文件復制成功
⑶驗證是否成功
# ssh root@192.168.1.110
應該是無秘自動登錄,表示成功,否則請重新檢查配置步驟 第三步 寫發布腳本
這是根據個人經驗寫的簡單發布腳本,可以優化的空間很大,但是也是可以實現完整的發布流程
#! /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
點擊【系統管理】-【系統設置】向下翻動找到【Publish over SSH】
配置如下,可指定多臺SSH Server
配置完成后,點擊 【Test Configuration】,出現success表示成功
-
第五步 構建項目
點擊 【新建】選擇【構建一個自由風格的軟件項目】
配置源碼管理
image.png
配置Maven 構建
配置構建后操作(重點)
點擊 【增加構建后操作步驟】選擇【Send build artifacts over SSH】
保存,點擊【立即構建】
應用服務器上的臨時目錄
tomcat下的webapps目錄,已發布成功
好了,基于Publish Over SSH插件自動化發布已經搭建好了,我想有了這個例子作為前期輔助,大家腦洞應該可以大開了吧?。?!
其實Jenkins發布的方式有很多,大家還是要選擇適合自己項目、公司的發布流程去搭建,祝大家學習愉快,天天進步?。?!
PS:本來準備這一版,是開始解決架構過程中的單點問題的,但是后來發現Jenkins篇一過于簡單,日常場景很多都不實用,所以決定寫了這篇。
后面還想再進一步學習下Jenkins結合Ansible實現自動化部署和回滾,日常工作比較忙,還是得看時間咯?。?!
2017-11-09 22:41:00