执行Shell
#export BUILD_ID=dontKillMe这一句很重要,这样指定了,项目启动之后才不会被Jenkins杀掉。
export BUILD_ID=dontKillMe
#指定最后编译好的jar存放的位置 即是发布目录
project_path=/usr/local/app/ft-web/
#启动脚本存放路径
shell_path=/usr/local/app/
#Jenkins中编译好的jar位置 即是编译目录
jar_path=/var/lib/jenkins/workspace/ft-business/ft-web/target/
#Jenkins中编译好的jar名称
jar_name=ft-web.jar
#备份文件名称
jar_name_bak=ft-web-bak.jar
#获取运行编译好的进程ID,便于我们在重新部署项目的时候先杀掉以前的进程
pid=$(cat /usr/local/app/ft-web/process.pid)
pwd
cd ${project_path}
#备份
mv ${jar_name} ${jar_name_bak}
echo "备份完成"
pwd
#进入指定的编译好的jar的位置
cd ${jar_path}
#将编译好的jar复制到最后指定的位置
cp ${jar_path}/${jar_name} ${project_path}
#进入最后指定存放jar的位置
cd ${project_path}
if ${pid}; then #判断进程号id是否存在
echo "pid is null"
else
echo "Kill the project process that may have been started before..."
kill -9 ${pid} #杀掉以前可能启动的项目进程
fi #if结束标志
cd ${shell_path}
pwd
sh ft-web.sh
echo "success"
#将进程ID存入到process.pid文件中
echo $! > /usr/local/app/ft-web/process.pid
Post Steps:
#!/bin/bash
#-*- coding:utf-8 -*-
pname='\n项目名称:'${JOB_NAME}
vv='\n项目版本号:'${version}
handler_type='\n项目描述:财税通后端工商财务服务'
build_time="\n触发时间:$(date +%F/%T)"
build_u='\n触发人员:'$BUILD_USER_ID
Message='发布完成'${pname}${vv}${handler_type}$build_time${build_u}
curl 'https://oapi.dingtalk.com/robot/send?access_token=b0e239a25e238f65445440ff90cfa7634b5db25f3fce21de147fc3abdc9236ca' \
-H 'Content-Type: application/json' \
-d "
{\"msgtype\": \"text\",
\"text\": {
\"content\": \"$Message\"
}
}"