增加从节点部署文件同步逻辑
增加从节点部署文件同步逻辑 Signed-off-by: panjunjie <46790855@qq.com>
This commit is contained in:
parent
72d8861f76
commit
22756d1f23
63
java-mall-app-shop-admin/Jenkinsfile
vendored
63
java-mall-app-shop-admin/Jenkinsfile
vendored
@ -2,8 +2,12 @@ pipeline {
|
|||||||
agent any
|
agent any
|
||||||
|
|
||||||
environment {
|
environment {
|
||||||
DEPLOY_DIR = '/data/nginx/www/fafamall/mchapp'
|
DEPLOY_DIR = '/data/nginx/www/fafamall/mchapp' // 主节点部署目录
|
||||||
DIST_PATH = './java-mall-app-shop-admin/dist/web'
|
DIST_PATH = './java-mall-app-shop-admin/dist/web' // 编译产物目录(按原脚本保留)
|
||||||
|
SLAVE_IP = '172.16.0.10' // 从节点 IP
|
||||||
|
SLAVE_DEPLOY_DIR = '/data/nginx/www/fafamall/mchapp' // 从节点目标目录(与主节点一致)
|
||||||
|
SSH_PORT = '2203' // 从节点 SSH 端口
|
||||||
|
SSH_KEY = '/root/.ssh/id_rsa' // 主节点免密私钥路径
|
||||||
}
|
}
|
||||||
|
|
||||||
stages {
|
stages {
|
||||||
@ -17,20 +21,67 @@ pipeline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage('部署') {
|
stage('主节点部署') {
|
||||||
steps {
|
steps {
|
||||||
sh """
|
sh """
|
||||||
mkdir -p ${DEPLOY_DIR}
|
mkdir -p ${DEPLOY_DIR}
|
||||||
rm -rf ${DEPLOY_DIR}/*
|
rm -rf ${DEPLOY_DIR}/*
|
||||||
cp -r ${DIST_PATH}/* ${DEPLOY_DIR}/
|
cp -r ${DIST_PATH}/* ${DEPLOY_DIR}/
|
||||||
echo "部署完成:${DIST_PATH} → ${DEPLOY_DIR}"
|
echo "主节点部署完成:${DIST_PATH} → ${DEPLOY_DIR}"
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('同步到从节点') {
|
||||||
|
steps {
|
||||||
|
sh """
|
||||||
|
echo "========================================"
|
||||||
|
echo "开始同步主节点 → 从节点"
|
||||||
|
echo "主节点目录:${DEPLOY_DIR}"
|
||||||
|
echo "从节点信息:${SLAVE_IP}:${SLAVE_DEPLOY_DIR}(SSH端口:${SSH_PORT})"
|
||||||
|
echo "========================================"
|
||||||
|
|
||||||
|
# 步骤1:远程创建从节点目标目录(不存在则递归创建)
|
||||||
|
echo "第一步:创建从节点目录..."
|
||||||
|
ssh -i ${SSH_KEY} \
|
||||||
|
-p ${SSH_PORT} \
|
||||||
|
-o StrictHostKeyChecking=no \
|
||||||
|
-o ConnectTimeout=10 \
|
||||||
|
root@${SLAVE_IP} \
|
||||||
|
"mkdir -p ${SLAVE_DEPLOY_DIR}"
|
||||||
|
|
||||||
|
# 检查目录创建结果
|
||||||
|
if [ \$? -ne 0 ]; then
|
||||||
|
echo "错误:从节点目录创建失败!请检查:"
|
||||||
|
echo "1. 主节点免密登录是否配置(私钥路径:${SSH_KEY})"
|
||||||
|
echo "2. 从节点 2203 端口是否放行"
|
||||||
|
echo "3. 从节点 root 权限是否正常"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 步骤2:rsync 同步文件(保持主从一致)
|
||||||
|
echo "第二步:执行 rsync 同步..."
|
||||||
|
rsync -avz \
|
||||||
|
--delete \
|
||||||
|
--exclude="*.log" \
|
||||||
|
-e "ssh -i ${SSH_KEY} -p ${SSH_PORT} -o StrictHostKeyChecking=no" \
|
||||||
|
${DEPLOY_DIR}/ \
|
||||||
|
root@${SLAVE_IP}:${SLAVE_DEPLOY_DIR}/
|
||||||
|
|
||||||
|
# 检查同步结果
|
||||||
|
if [ \$? -eq 0 ]; then
|
||||||
|
echo "✅ 从节点同步成功!主从目录完全一致"
|
||||||
|
else
|
||||||
|
echo "❌ 从节点同步失败!请查看 Jenkins 控制台日志"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
post {
|
post {
|
||||||
success { echo "✅ 部署成功" }
|
success { echo "🎉 主节点部署+从节点同步全部成功!" }
|
||||||
failure { echo "❌ 部署失败" }
|
failure { echo "❌ 部署/同步失败,请排查问题后重试" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user