jenkins部署springboot应用

最近在项目中使用持续交付(CI)工具jenkins部署spring-boot应用,碰到不少问题,特以此文记录

jenkins配置

  • 插件配置
  • java,maven,git配置

部署脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#!/usr/bin/env bash

BUILD_ID=dontKillMe

PROJ_NAME="backend-web-service"
LOG_PATH="/mnt/data01/logs"
MODULE_JAR_PATH="${WORKSPACE}/backend-web-service/target/${PROJ_NAME}.war"

###### Stop service
pid=`ps -ef | grep $PROJ_NAME | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
sudo kill -9 $pid
fi

###### Maven build package
cd ${WORKSPACE} && mvn clean package -Dmaven.test.skip=true

###### Start service
# Check Log Path
if [ ! -d ${LOG_PATH} ]; then
sudo mkdir -p ${LOG_PATH}
fi

sudo nohup java -jar ${MODULE_JAR_PATH} --spring.profiles.active=dev --logback.logdir=${LOG_PATH} 1>/dev/null 2>/dev/null &

echo "Log Path : ${LOG_PATH}"

碰到的问题

  • 由于jenkins构建完毕后会杀掉所有启动的进程,可以通过改变BUILD_ID的值来防止后台进程被杀死
  • 如果采用maven工程进行构建,修改BUILD_ID无效,后台进程随着jenkins构建完成后仍被杀死
分享到