This commit is contained in:
lihaoyuan 2025-12-24 18:00:17 +08:00
commit eb6339e2c6

66
Jenkinsfile vendored
View File

@ -31,72 +31,6 @@ pipeline {
"""
}
}
stage('同步到从节点并重启 Nginx') {
steps {
sh """
echo "========================================"
echo "开始同步主节点 → 从节点h5 项目)+ 重启 Nginx"
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" \
--exclude="*.tmp" \
-e "ssh -i ${SSH_KEY} -p ${SSH_PORT} -o StrictHostKeyChecking=no" \
${DEPLOY_DIR}/ \
root@${SLAVE_IP}:${SLAVE_DEPLOY_DIR}/
# 检查同步结果,失败则终止
if [ \$? -eq 0 ]; then
echo "✅ 从节点同步成功!主从 h5 目录完全一致"
else
echo "❌ 从节点同步失败!请查看 Jenkins 控制台日志详情"
exit 1
fi
# 步骤3远程重启从节点 Nginx加载新代码
echo "第三步:重启从节点 Nginx 服务..."
ssh -i ${SSH_KEY} \
-p ${SSH_PORT} \
-o StrictHostKeyChecking=no \
-o ConnectTimeout=10 \
root@${SLAVE_IP} \
"systemctl restart nginx"
# 检查 Nginx 重启结果(容错处理:重启失败不终止流程,仅告警)
if [ \$? -eq 0 ]; then
echo "✅ 从节点 Nginx 重启成功!新代码已生效"
else
echo "⚠️ 警告:从节点 Nginx 重启失败!请手动执行以下命令排查:"
echo "ssh -i ${SSH_KEY} -p ${SSH_PORT} root@${SLAVE_IP} 'systemctl status nginx'"
echo "(同步已完成,仅 Nginx 重启失败,不影响代码一致性)"
fi
"""
}
}
}
post {