jenkins 自動發佈腳本(publish.sh)

1. jenkins打包完成後,經過ssh將war上傳到目標服務器,以後執行指定文件、傳入參數python

2. # touch /data/tomcat/jenkins/publish.shweb

3. 增長以下內容:tomcat

#!/bin/bash  
#defined

source /etc/profile

TOMCAT_HOME="/root/jenkins/tomcat"
TOMCAT_PORT=8088
PROJECT="$1"

#param validate  
if [ $# -lt 1 ]; then
  echo "you must use like this : ./publish.sh <projectname> <tomcat home dir>:<tomcat port>"    
  exit
fi
if [ "$2" == "" ]; then
   echo "you must use like this : ./publish.sh <projectname> <tomcat home dir>:<tomcat port>"    
  exit
fi

#sleep 5


OLD_IFS=$IFS

IFS=$','

arr=($2)

for x in ${arr[@]};
do

	IFS=$':'

	p=($x)

        TOMCAT_HOME=${p[0]}
        TOMCAT_PORT=${p[1]}

        #check tomcat process  
        tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
        echo "current :" $tomcat_pid 

        #shutdown tomcat  
	    kill -9 "$tomcat_pid"
        echo "tomcat shutdown"

        while [ -n "$tomcat_pid" ]  
        do
                sleep 5
                tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
		        kill -9 "$tomcat_pid"
                echo "scan tomcat pid :" $tomcat_pid  
        done

        #bak project  
        #BAK_DIR=./bak/$PROJECT/`date +%Y%m%d`
        #mkdir -p "$BAK_DIR"
        #cp "$TOMCAT_HOME"/webapps/$PROJECT.war "$BAK_DIR"/"$PROJECT"_`date +%H%M%S`.war
        #remove tmp  
        #rm -rf /save/$PROJECT*.war     

	    basepath=$(cd `dirname $0`; pwd)

        #publish project  
        echo "scan no tomcat pid,$PROJECT publishing"  
        rm -rf "$TOMCAT_HOME"/webapps/ROOT*
        cp "$basepath"/$PROJECT*.war "$TOMCAT_HOME"/webapps/ROOT.war

        #start tomcat  
        "$TOMCAT_HOME"/bin/startup.sh
        echo "tomcat is starting,please try to access $PROJECT conslone url"
done

IFS=$OLD_IFS
相關文章
相關標籤/搜索