背景:使用gitlab+jenkins+pipeline打包java項目
1.配置jenkins+pipeline項目
備註上面的代碼項 目 地址:http://git.bqjr.club/NCP/new_crm_platform.git<br/><br/>服務器地址:PRD 環境192.168.5.75 <br/><br/>項目 經理:<br/><br/>開發 人員:<br/><br/><p style="color: #e9013b !important;font-weight: 700;">注意事項: 由於生產環境是負載均衡, 請注意單臺部署! </p>
2.配置pipeline
備註:上面的代碼<p style="color: #e9013b !important;font-weight: 700;">選擇分支,根據項目組提供的分支構建</p>
3.pipeline語法
`node {
try {
stage('代碼拉取') {
//input id: 'ncpprd', message: '發佈生產請找-/admin--批准?', ok: '確認', submitter: 'admin,xiongxinjiang'
sh "rm -rf /var/lib/jenkins/jobs/prd-mt-ncp75/workspace/*"
git branch: "${BranchName}", credentialsId: 'xiongxj', url: 'http://[email protected]/NCP/new_crm_platform.git'
}
stage('項目構建') {
sh "/usr/local/maven/bin/mvn -Dmaven.test.skip=true clean package"
}
stage('上傳WAR包') {
sh "scp -P 10022 target/ncp-0.0.1-SNAPSHOT.war [email protected]:/home/bqadm/sftp/"
}
stage('項目部署'){
sh "ssh -p 10022 [email protected] 'sudo sh -x /opt/shell/ncp_deploy75.sh'"
}
}catch (any) {
currentBuild.result = 'FAILURE'
throw any
}
}`
4.ncp_deploy75.代碼
#/bin/bash
#買買提新客服平臺系統自動部署腳本 適用tomcat程序
JAVA_HOME=/usr/local/jdk1.8.0_144
JRE_HOME=/usr/local/jdk1.8.0_144/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CATALINA_HOME=/opt/ncp-tomcat
export JAVA_HOME JRE_HOME CLASS_PATH PATH
############################################
app_name=ncp-tomcat
echo "==============[停止tomcat]=================="
/opt/ncp-tomcat/bin/catalina.sh stop
#ps -ef |grep -v grep |grep "${app_name}"
ps -ef |grep java |grep "${app_name}" |grep -v grep
if [ "$?" == 0 ];then
for x in `ps -ef |grep -v grep |grep java |grep "${app_name}" |awk '{print $2}'`;do
echo "Killing pid $x ..."
sudo kill -15 $x
done
else
echo "Stop app [ SUCCESS ]"
fi
sleep 3
ps -ef |grep -v grep |grep java |grep "${app_name}"
if [ "$?" == 0 ];then
for x in `ps -ef |grep -v grep |grep java |grep "${app_name}" |awk '{print $2}'`;do
echo "Killing pid $x ..."
sudo kill -9 $x
done
else
echo "Stop app [ SUCCESS ]"
sleep 3
fi
echo "==============文件備份========================"
if [ ! -f "/home/bqadm/sftp/ncp-0.0.1-SNAPSHOT.war" ];then
echo "沒有文件或已爲最新文件"
else
sudo mv /opt/ncp-tomcat/webapps/ncp.war /opt/war_bak/ncp.war_$(date +%Y-%m-%d_%H%M%S)
sudo rm -rf /opt/ncp-tomcat/webapps/*
echo "============拷貝文件======================"
mv /home/bqadm/sftp/ncp-0.0.1-SNAPSHOT.war /opt/ncp-tomcat/webapps/ncp.war
sleep 5
echo "================重啓tomcat============"
/opt/ncp-tomcat/bin/startup.sh
sleep 10
ps -ef |grep java |grep "${app_name}" |grep -v grep
fi