2016-03-29 24 views
0

既存のワークスペースを削除するようにjenkinsを設定し、既存のビルドをtomcatワークスペースにコピーしてからtomcatを再起動します。私はジェンキンから実行シェルを使用します。jenkins実行シェルから再起動した後にTomcatが停止する

#!/bin/sh 
version=1.0.0-BUILD-SNAPSHOT 
build_no=${BUILD_NUMBER} 

if [ $build_no ] 
then 
cd ~ 
TOMCAT_WEBAPPS=`locate apache-tomcat | grep apache-tomcat | grep webapps | head -n 1 | awk '{ print $1 }'` 
rm $TOMCAT_WEBAPPS/app-api.war 
rm -rf $TOMCAT_WEBAPPS/app-api/* 
rmdir $TOMCAT_WEBAPPS/app-api/ 
wget http://jenkins/job/project/ws/api/build/api-$version-$build_no-bin.zip 
unzip -j connectedcare-api-$version-$build_no-bin.zip 
rm api-$version-$build_no-bin.zip 
cp api-$version.war $TOMCAT_WEBAPPS/app-api.war 
rm api-$version.war 
else 
echo "Please specify the jenkins build number as an argument: "$0" <build_number>" 
exit 
fi 

echo "Restarting tomcat ..." 

TOMCAT_PID=`ps -ef | grep tomcat | grep java | awk ' { print $2 } '` 

if [ $TOMCAT_PID ] 
then 
    echo "Tomcat is running with PID" $TOMCAT_PID 

    echo "Forced tomcat stop with PID" $TOMCAT_PID 
    kill -9 $TOMCAT_PID 
    echo "Tomcat was stoped" 
fi 

echo "Starting tomcat" 

TOMCAT_STARTUP_FILE=`locate apache-tomcat | grep apache-tomcat | grep startup.sh | awk ' { print $1 } '` 

$TOMCAT_STARTUP_FILE 

TOMCAT_PID=`ps -ef | grep tomcat | grep java | awk ' { print $2 } '` 

if [ $TOMCAT_PID ] 
then 
    echo "Tomcat is running with PID" $TOMCAT_PID 
else 
    echo "Failed to start tomcat." 
fi 

ビルドを実行すると、以下のように、結果は次のとおりです:

Restarting tomcat ... 
Tomcat PID 10152 
Tomcat is running with PID 10152 
Forced tomcat stop with PID 10152 
Tomcat was stoped 
Starting tomcat 
Tomcat started. 
Tomcat is running with PID 14781 

私は、LinuxマシンのTomcatで探していたときに問題が続いているが何も実行されず、スクリプトは以下の通りですログには何もないので、私が間違っていることを理解できません。私にいくつかの提案をお願いしますか?

ありがとうございました

答えて

2

解決策を見つけることができました。 JenkinsはBUILD_IDという環境変数を操作します。 tomcatを再起動する前に、次のコード行が必要です。

エクスポートBUILD_ID = dontKillMe

関連する問題