jenkins publish over ssh插件

publish over ssh插件能夠容許jenkins經過ssh登陸服務器傳輸文件並執行腳原本執行發佈操做。java

安裝配置publish over ssh插件

1.安裝插件,略web

2.使用ssh-keygen爲jenkins單獨生成一個證書,將公鑰放到須要發佈應用服務器上,我生成在了jenkins的data目錄下,以避免和root用戶默認的證書衝突 注意:必定要在jenkins服務器上以jenkins的tomcat的啓動用戶去ssh username@ip ,當問到是否加入指紋時選yes,把指紋加進known_hosts,否則jenkins使用publish over ssh時會一直超時tomcat

3.配置插件,進入 系統管理 -》 系統設置 裏的 Publish over SSH 添加證書信息:需填寫生成私鑰的密碼,可填寫私鑰文件的路徑或填寫私鑰文件的內容 添加服務器: 不用多說了,最後test configuration看是否成功ssh服務器

輸入圖片說明

配置job使用publish over ssh發佈應用

1.在job中點擊 Post Steps -》 Add post-build step,選中Send files or execute commands over SSHapp

輸入圖片說明

2.配置傳輸的文件及執行的命令 Name:選擇你要發佈的服務器 source files:填寫要傳輸的文件,當前路徑爲workspace,點右邊問號看還支持通配符 remove prefix:移除目錄 remote directory:測試下來寫絕對路徑沒用,要是想放到非用戶home目錄下的話去系統設置裏改remote directoryssh

輸入圖片說明

exec commands單獨說 無非就是幾個過程curl

  • 初始化變量
  • 關閉tomcat
  • 把傳過來的包備份下,防止往後用來回滾
  • 刪除tomcat下的war包和解壓出來的目錄,用新打出來的war包替換
  • 啓動tomcat
  • 檢查下tomcat起來沒
source /etc/profile        #java環境變量
time=`date +%Y-%m-%d-%H:%M:%S`
warname="ROOT.war"
tomcatdir="/data/app/tomcat7"      
wardir=$tomcatdir/webapps

pid=`ps aux|grep "\-Dcatalina.home=$tomcatdir" | grep -v grep |awk -F' ' '{print $2}'`
echo "tomcat pid:$pid"
$tomcatdir/bin/shutdown.sh
sleep 5
ps -p $pid && kill -9 $pid

mkdir -p /data/packages/esb/
\cp -f /root/esb/${package_name}  /data/packages/esb/${package_name}.$time
rm -rf $wardir/*
\cp -f /data/packages/esb/${package_name}.$time   $wardir/$warname

$tomcatdir/bin/startup.sh && sleep 5 
pid=`ps aux|grep "\-Dcatalina.home=$tomcatdir"|grep -v grep |awk -F' ' '{print $2}'`
echo "new tomcat pid: $pid"

curl http://127.0.0.1:8080/index.jsp || exit 1
相關文章
相關標籤/搜索