merchapp/java-mall-app-shop-admin/Jenkinsfile
panjunjie 22756d1f23 增加从节点部署文件同步逻辑
增加从节点部署文件同步逻辑

Signed-off-by: panjunjie <46790855@qq.com>
2025-11-10 01:10:10 +08:00

87 lines
3.5 KiB
Groovy
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

pipeline {
agent any
environment {
DEPLOY_DIR = '/data/nginx/www/fafamall/mchapp' // 主节点部署目录
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 {
stage('拉取代码并验证') {
steps {
checkout scm
sh """
[ -d "${DIST_PATH}" ] || { echo "错误:未找到 ${DIST_PATH} 文件夹"; exit 1; }
echo "${DIST_PATH} 验证通过"
"""
}
}
stage('主节点部署') {
steps {
sh """
mkdir -p ${DEPLOY_DIR}
rm -rf ${DEPLOY_DIR}/*
cp -r ${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
# 步骤2rsync 同步文件(保持主从一致)
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 {
success { echo "🎉 主节点部署+从节点同步全部成功!" }
failure { echo "❌ 部署/同步失败,请排查问题后重试" }
}
}