jenkins自動部署tomcat
關於部署的3種思路:
關於maven構建的兩種選擇:
- 添加shell編譯過程,經過shell調用服務器的maven環境
export BUILD_ID=XXXXXX # 必須得加,緣由未知,不然沒法啓動tomcat
export project_dir=$WORKSPACE
export target_dir=/export/App/zgbcms.m.jd.com
export do_dir=/export/Domains/zgbcms.m.jd.com/server1/bin
export war_path="cms-web"
export war_file="cms-web.war"
# 接受6個參數,mvn_parama爲編譯什麼版本,接受參數dovolopment,test
export mvn_parama="test"
/home/lyz/bushu.sh
環境部署shell:
#!/bin/bash
# 自動編譯部署腳本,jenkins調用
# 編譯後生成文件war,清空並解壓到指定文件夾,重啓服務器
export M2_HOME=/export/servers/apache-maven-2.2.1
export JAVA_HOME=/export/servers/jdk1.6.0_25
export JAVA_BIN=/export/servers/jdk1.6.0_25/bin
export PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin
export CLASSPATH=.:/lib/dt.jar:/lib/tools.jar
export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"
export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
export PATH=$PATH:$M2_HOME/bin
# 測試用傳參
#export project_dir=/root/.jenkins/workspace/zgb_server_master
#export target_dir=/export/App/zgb.m.jd.com
#export do_dir=/export/Domains/zgb.m.jd.com/server1/bin
#export war_path="jd-qqgserver-web"
#export war_file="jd-qqgserver-web.war"
project_dir=$project_dir
target_dir=$target_dir
do_dir=$do_dir
war_path=$war_path
war_file=$war_file
mvn_parama=$mvn_parama
echo $project_dir
echo $target_dir
echo $do_dir
echo $war_path
echo $war_file
echo $mvn_parama
function mvn_build()
{
if[ $# -eq 6 ] # 校驗參數是否爲6個
then
if[-d "$project_dir/"]&&[-d "$target_dir/"]&&[-d "$do_dir/"]# 校驗文件夾是否存在
then
cd $project_dir
if["$mvn_parama"=="development"]
then
echo "編譯開發版本!"
mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -P artifactory,development
elif["$mvn_parama"=="test"]
then
echo "編譯test版本!"
mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true -P artifactory,test
else
echo "未指定配置文件參數!會致使服務器沒法訪問!"
exit 1
fi
rm -rf $target_dir/*
cp -r $project_dir/$war_path/target/$war_file $target_dir/
echo $target_dir/$war_file
cd $target_dir
unzip -oq $war_file
rm -rf $target_dir/$war_file
$do_dir/stop.sh
if[ $?==0]
then
echo "服務器中止成功!"
else
echo "服務器中止失敗!"
fi
$do_dir/start.sh
if[ $?==0]
then
echo "服務器啓動成功!"
else
echo "服務器啓動失敗!"
exit 1# 退出狀態爲1,傳給jenkins讓任務失敗
fi
else
echo "Folder $* is not exist!"
exit 1
fi
else
echo "$0 is Errors! Parama is $# not 6!"
exit 1
fi
}
# 接受6個參數,mvn_parama爲編譯什麼版本,接受參數dovolopment,beta,production,test 或其餘,其餘爲默認
mvn_build $project_dir $target_dir $do_dir $war_path $war_file $mvn_parama
附件列表
歡迎關注本站公眾號,獲取更多信息