只需要定义两个变量, 一个是目标tomcat实例的目录, 另一个是war包的名称
# Please define the absolute path of tomcat instance
THIS_TC_INSTANCE='/home/tomcat/tomcat8_jdk8_1'
THIS_APP_MODULE='throne-commons' df -h
echo ''
pid=`ps -ef|grep ${THIS_TC_INSTANCE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
if [ -z $pid ] ; then
echo 'Tomcat '${THIS_TC_INSTANCE}' is not running'
else
echo 'Shutting down Tomcat at '${THIS_TC_INSTANCE}
${THIS_TC_INSTANCE}/bin/shutdown.sh
sleep
fi pid=`ps -ef|grep ${THIS_TC_INSTANCE}|grep -v 'grep'|grep 'java'|awk '{print $2}'`
if [ -z $pid ] ; then
echo 'Tomcat '${THIS_TC_INSTANCE}' has been shut down'
else
echo 'Tomcat '${THIS_TC_INSTANCE}' didnot exit normally, now killing the PID:'${pid}
ps -ef|grep ${THIS_TC_INSTANCE}|grep -v 'grep'|grep 'java'|awk '{print $2}'|xargs kill -s
fi echo ''
echo 'Removing old deployments'
rm -f ${THIS_TC_INSTANCE}/webapps/${THIS_APP_MODULE}.war
rm -rf ${THIS_TC_INSTANCE}/webapps/${THIS_APP_MODULE}
echo 'Copying new deployments'
echo ''
cp -f /home/tomcat/builds/${THIS_APP_MODULE}.war ${THIS_TC_INSTANCE}/webapps/
echo 'Startup tomcat'
${THIS_TC_INSTANCE}/bin/startup.sh
对应的Jenkins Pipeline配置
node {
// Mark the code checkout 'stage'....
stage 'Checkout' sh "mkdir -p throne-commons-impl"
dir('throne-commons-impl') {
git branch: 'master', credentialsId: '859dde85-5e0c-4ab3-8fd1-d31c96d4cae4', url: '[email protected]:yhc/throne-commons-impl.git'
} env.JAVA_HOME="${tool 'jdk1.8.0_101'}"
sh '$JAVA_HOME/bin/java -version'
def mvnHome = tool 'apache-maven-3.3.9' stage 'Build'
dir('throne-commons-impl') {
sh "${mvnHome}/bin/mvn -s /home/tomcat/files/settings.xml clean package -Dmaven.test.skip=true -Pthrone_qa -e"
} stage 'Publish'
sshagent(['594d69cf-fd5e-45ea-8ab0-c94db218017a']) {
sh 'ssh -p 22 [email protected] \'df -h\''
sh 'scp throne-commons-impl/target/throne-commons.war [email protected]:/home/tomcat/builds/'
sh 'ssh -p 22 [email protected] \'/home/tomcat/scripts/deploy_t8_j8_1_commons.sh\''
}
}