Shell脚本自动拉取Git仓库代码打包部署
这是一个自动化部署Java应用的Shell脚本。主要内容包括:1) 从Git拉取最新代码;2) 使用Maven构建应用;3) 替换旧的JAR包;4) 优雅终止旧进程;5) 启动新JAR包进程并重定向日志输出。脚本采用严格模式(set -e),每步操作都有错误检测,终止旧进程时先尝试正常终止(SIGTERM),失败后强制终止(SIGKILL)。最后提示用户可以通过tail命令查看实时日志。执行方式为
·
#创建文件名
vim start.sh
脚本命令:
#!/bin/bash
set -e # 任何命令失败时立即退出脚本
# 1. 拉取最新代码(如果代码仓库需要认证(如 SSH 密钥或账号密码),git pull 可能因权限问题失败)
echo "Pulling latest code from Git..."
cd /root/demo
if ! git pull; then
echo "Error: git pull failed!"
exit 1
fi
# 2. 重新构建应用
echo "Building application with Maven..."
cd /root/demo
if ! mvn install; then
echo "Error: mvn install failed!"
exit 1
fi
# 3. 替换旧 JAR 包
echo "Replacing old JAR file..."
cd /usr/java/demo
rm -f demo.jar # 直接删除旧文件(无需 -rf)
mv /root/demo/demo-admin/target/demo-admin.jar /usr/java/demo/
# 4. 停止旧进程(优雅终止优先)
echo "Stopping existing demo-admin process..."
tomcatID=$(pgrep -f 'demo-admin')
if [ -n "$tomcatID" ]; then
echo "Found running process (PID: $tomcatID), stopping gracefully..."
kill -15 $tomcatID
sleep 5 # 等待 5 秒
if ps -p $tomcatID > /dev/null; then
echo "Process still running, forcing kill..."
kill -9 $tomcatID
fi
else
echo "demo-admin is not running."
fi
# 5. 启动新进程
echo "Starting new demo-admin process..."
nohup java -jar /usr/java/demo/demo-admin.jar >> demo-admin.out 2>&1 &
# 6. 查看日志
echo "Deployment completed. Tail logs with: tail -f demo-admin.out"
运行脚本:
sh start.sh
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)