?【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-testAPP_NAME=demo-testAPP_PORT=7080VERSION=1.0.0-SNAPSHOTcd $APP_DIRrm -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" == "" ]; thenecho "應用:$APP_NAME 容器不存在。"
elseecho "應用:$APP_NAME 存在容器:$PID"docker stop $PIDdocker rm $PIDecho "容器:$PID 停止成功。"docker rmi $PIDecho "鏡像:$PID 停止成功。"
fiecho "應用:$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 流水線的配置:
?
?
?
?
?