website/Jenkinsfile
panjunjie 918229cb84 增加从节点部署文件同步逻辑。
增加从节点部署文件同步逻辑。

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

70 lines
2.8 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/website' // 主节点部署目录
DIST_PATH = 'dist' // 编译产物目录
SLAVE_IP = '172.16.0.10' // 从节点 IP
SLAVE_DEPLOY_DIR = '/data/nginx/www/fafamall/website' // 从节点目标目录(与主节点一致)
SSH_PORT = '2203' // 从节点 SSH 端口
SSH_KEY = '/root/.ssh/id_rsa' // Jenkins 服务器(主节点)免密私钥路径
}
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 """
# 核心逻辑1. 远程创建从节点目录(不存在则创建) 2. rsync 同步文件
echo "开始同步主节点 ${DEPLOY_DIR} → 从节点 ${SLAVE_IP}:${SLAVE_DEPLOY_DIR}"
# 步骤1远程创建从节点目标目录-p 递归创建父目录,已存在不报错)
ssh -i ${SSH_KEY} -p ${SSH_PORT} -o StrictHostKeyChecking=no root@${SLAVE_IP} "mkdir -p ${SLAVE_DEPLOY_DIR}"
if [ \$? -ne 0 ]; then
echo "错误:从节点目录创建失败,请检查 SSH 免密/端口/权限"
exit 1
fi
# 步骤2rsync 同步文件(保持主从一致)
rsync -avz --delete \
-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 "❌ 部署/同步流程失败,请排查问题" }
}
}