diff --git a/Jenkinsfile b/Jenkinsfile index 650d77d..8faf43c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -32,53 +32,7 @@ pipeline { } } - 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 - - # 步骤2:rsync 同步文件(保持主从一致) - 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 - - # 步骤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 {