1.腳本
[root@nginx script]# cat autoci.sh #!/bin/bash # 環境變量 # $WORKSPACE:JENKINS自帶環境變量,在哪個任務下執行,WORKSAPCE就是哪個目錄 # $tag_version:JENKINS任務里面git插件傳過來的值,就是程序的tag版本 DATE=`date +%F-%H-%M-%S` FILENAME="monitor-${tag_version}" SDIR=$WORKSPACE DDIR=/usr/local/nginx/html OTHERIP="192.168.3.156 192.168.3.157" #打包程序 archive_code(){ cd $SDIR && tar zcf /script/${FILENAME}.tar.gz ./ } #推送部署程序 deploy_code(){ for IP in $OTHERIP do echo "正在傳輸文件到$IP" scp -rq /script/${FILENAME}.tar.gz root@$IP:/tmp/ echo "$IP文件傳輸完成,正在部署" ssh root@$IP "mkdir $DDIR/$FILENAME &&\ tar xf /tmp/${FILENAME}.tar.gz -C $DDIR/$FILENAME &&\ rm -rf $DDIR/monitor &&\ ln -s $DDIR/$FILENAME $DDIR/monitor &&\ /usr/local/nginx/sbin/nginx -s reload" echo "$IP部署完成" done } #部署 deploy(){ archive_code deploy_code } #回滾 back(){ BACKFILE=$(ssh root@192.168.3.156 "find /usr/local/nginx/html/ -maxdepth 1 -name monitor-${tag_version}") if [[ $BACKFILE == "" ]];then echo "無法取到${tag_version}版本,請檢查是否已經部署" exit 1 fi for IP in $OTHERIP do echo "正在回滾$IP到$tag_version版本" ssh root@$IP "rm -rf $DDIR/monitor &&\ ln -s $BACKFILE $DDIR/monitor &&\ /usr/local/nginx/sbin/nginx -s reload" echo "$IP回滾完成" done } if [[ $SELECT == "DEPLOY" ]];then deploy elif [[ $SELECT == "BACK" ]];then back fi
2.jenkins頁面
3.程序目錄,一個tag版本只生成一個程序包