之前的外包项目我都使用的Jenkins自动部署,但是Jenkins本身也是一个Java应用,还挺吃内存,我个人服务器只有1G的内存,跑Jenkins会很吃力,况且还用不到几次,所以直接写一个脚本半自动部署了,这里简单记录一下。

#!/bin/bash

# 打包环境
env=prod
# 端口
port=9002

jar_name=*-${env}-*.jar
# 项目运行目录
running_path=./running

echo "开始拉取项目"
git pull
echo "项目拉取完毕"

pid=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }');
echo "当前应用pid=${pid}"
if [ -n "${pid}" ]; then
kill -9 ${pid};
echo "已停止当前应用"
fi

echo "开始构建项目"
# Maven打包,在这修改Maven打包参数
mvn clean package -Dmaven.test.skip=true -P ${env}
if [ ! -d "${running_path}" ];then
mkdir ${running_path}
fi
if [ ! -d "${running_path}/${env}" ];then
mkdir ${running_path}/${env}
fi
rm -rf ${running_path}/${env}/*
cp ./target/${jar_name} ${running_path}/${env}
echo "项目构建完毕"

echo "开始启动项目"
# 启动运行的项目,在这修改jar启动参数
nohup java -Xmx64m -Xms16m -jar ${running_path}/${env}/${jar_name} > ${running_path}/${env}/output.log &
echo "项目启动完成"

脚本很简单,从git拉取更新,判断当前项目是否在运行,在运行则关闭。然后Maven打包,再把打包后的jar放到指定目录。最后使用nohup后台运行。

我的项目是配置了多环境打包的,详见Spring boot 项目多环境打包控制