下一篇文章预告:Jenkins+Ansible 自动化部署
node {
//Jenkins的maven版本
def mvnHome = tool 'maven3.6'
//git分支
def branchAll = "${env.branch}"
def branch = "dev"
if("${branchAll}"=='origin/master'||"${branchAll}"=='origin/dev'){
def branchOut = branchAll.split("/")
branch = branchOut[1]
}
//连接远程服务器进行发布,部署
stage ('Pull & Run') {
def remote = [:]
remote.name = 'test'
if("${branch}"=='release'){
remote.host ='172.168.0.110'
remote.user = 'root'
remote.password ='123456'
}else{
remote.host ='172.168.0.111'
remote.user = 'root'
remote.password ='123456'
}
remote.allowAnyHosts= true
if("${branch}"=='master'){
writeFile file:'tempStart.sh', text:'''
kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')
if [ -d "xxx" ];then
cd /root/xxx
git reset --hard
git pull
else
git clone -b master ssh://git@xxxxxxx.git
cd /root/xxx
fi
cd ./xxx/
echo "编译打包";
mvn clean install -U
echo "代码质量检测";
mvn sonar:sonar
cd ./target
nohup java -jar -Xms512M -Xmx512M -Dspring.profiles.active=*.jar >/dev/null &
if [ $? -eq 0 ]; then
echo "模块执行成功";
else
echo "模块执行失败";
fi
'''
}else ("${branch}"=='dev'){
writeFile file:'tempStart.sh', text:'''
kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')
if [ -d "xxx" ];then
cd /root/xxx
git reset --hard
git pull
else
git clone -b dev ssh://git@xxxxxxx.git
cd /root/xxx
fi
cd ./xxx/
echo "编译打包";
mvn clean install -U
echo "代码质量检测";
mvn sonar:sonar
cd ./target
nohup java -jar -Xms512M -Xmx512M -Dspring.profiles.active=test *-exe.jar >/dev/null &
if [ $? -eq 0 ]; then
echo "模块执行成功";
else
echo "模块执行失败";
fi
'''
}
sshScript remote: remote,script: "tempStart.sh"
}
//发起邮件
stage("发送邮件"){
echo "发送邮件"
emailext body: '''
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<a href="${PROJECT_URL}">${PROJECT_URL}</a>
<hr size="2" width="100%" align="center" />
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tbody>
<tr>
<td>(本邮件由程序自动下发,请勿回复!)</td>
</tr>
<tr>
<td>
<h2>
<font color="#FF0000">构建结果 - ${BUILD_STATUS}</font>
</h2>
</td>
</tr>
<tr>
<td><br /> <b>
<font color="#0B610B">构建信息</font>
</b>
<hr size="2" width="100%" align="center" />
</td>
</tr>
<tr>
<td>
<ul>
<li>项目名称:${PROJECT_NAME}</li>
<li>GIT路径: xxxxxxx</li>
<li>GIT分支: ${branch}</li>
<li>构建编号:${BUILD_NUMBER}</li>
<li>触发原因:${CAUSE}</li>
<li>docker地址:xxxxxx</li>
<li>构建日志:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
</ul>
</td>
</tr>
<tr>
<td> <b>
<font color="#0B610B">变更信息:</font>
</b>
<hr size="2" width="100%" align="center" />
</td>
</tr>
<tr>
<td>
<ul>
<li>上次构建成功后变化 : ${CHANGES_SINCE_LAST_SUCCESS}</li>
<li>上次构建不稳定后变化 : ${CHANGES_SINCE_LAST_UNSTABLE}</li>
<li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
<li>变更集:${JELLY_SCRIPT}</a></li>
</ul>