【jenkins】jenkins流水线构建打包jar,生成docker镜像,重启docker服务的过程,在jenkins上一键完成,实现提交代码自动构建,服务重启,服务发布的功能。一键实现。非常的舒服。
1. 启动脚本 shell脚本
这是 shell脚本
## startup.sh
## 本脚本的功能是在jenkins 构建完项目后,通过jar包生成docker 镜像,然后重新服务的功能。
## demo-test是 服务名字
## startup.sh
## 本脚本的功能是在jenkins 构建完项目后,通过jar包生成docker 镜像,然后重新服务的功能。
## demo-test是 服务名字
#!/bin/sh
echo "==================== start restart docker containers ====================="
APP_DIR=/root/saas/demo-test
APP_NAME=demo-test
APP_PORT=7080
VERSION=1.0.0-SNAPSHOT
cd $APP_DIR
rm -f demo-test-${VERSION}.jar
cp /data/jenkins/workspace/demo-test/target/demo-test-${VERSION}.jar ./
sleep 3s
## 检查进程是否存在
PID=$(docker ps -a --filter name=$APP_NAME| grep -v "grep"|awk '{print $2}'|awk 'NR==2')
if [ "$PID" == "" ]; then
echo "应用:$APP_NAME 容器不存在。"
else
echo "应用:$APP_NAME 存在容器:$PID"
docker stop $PID
docker rm $PID
echo "容器:$PID 停止成功。"
docker rmi $PID
echo "镜像:$PID 停止成功。"
fi
echo "应用:$APP_NAME 正在启动..."
docker build -t $APP_NAME .
docker run -m 4g --name $APP_NAME -d -p $APP_PORT:$APP_PORT -v /etc/localtime:/etc/localtime -v /data/logs/saas/demo-test/logs:/root/saas/demo-test/logs --network host $APP_NAME
echo "应用启动命令已执行,稍候请检查服务是否可用。"
echo "==================== end restart docker containers =========================="
~
2. jenkins 任务的创建
jenkins 流水线的配置: