From 2012e82d4bde24a1a579f2fd91eeef5d688e2448 Mon Sep 17 00:00:00 2001 From: panjunjie <46790855@qq.com> Date: Fri, 12 Dec 2025 20:47:59 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E4=BB=8E=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 去掉从节点脚本 Signed-off-by: panjunjie <46790855@qq.com> --- Jenkinsfile | 68 +++-------------------------------------------------- 1 file changed, 3 insertions(+), 65 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 07534f3..7049c18 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -28,72 +28,10 @@ pipeline { rm -rf ${DEPLOY_DIR}/* cp -r ${DIST_PATH}/* ${DEPLOY_DIR}/ echo "主节点部署完成:${DIST_PATH} → ${DEPLOY_DIR}" - """ - } - } - - 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 - - # 步骤2:rsync 同步文件(核心逻辑,保持主从一致) - 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 + echo "重启 Nginx 服务..." + systemctl restart nginx + echo "已重启服务" """ } } From 43ea49f03d37426e9f1b3751ee1e902a3055eed4 Mon Sep 17 00:00:00 2001 From: panjunjie <46790855@qq.com> Date: Fri, 12 Dec 2025 20:54:24 +0800 Subject: [PATCH 2/3] fix sh bug fix sh bug --- Jenkinsfile | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 7049c18..f51fe67 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -29,9 +29,16 @@ pipeline { cp -r ${DIST_PATH}/* ${DEPLOY_DIR}/ echo "主节点部署完成:${DIST_PATH} → ${DEPLOY_DIR}" - echo "重启 Nginx 服务..." - systemctl restart nginx - echo "已重启服务" + # 2. Nginx 操作(优先热重载,无停机) + echo "检查 Nginx 配置语法..." + /usr/sbin/nginx -t # 先校验配置,避免重载失败 + + echo "热重载 Nginx 配置..." + # Debian systemd 下的正确写法(绝对路径+sudo,需提前配置免密) + sudo /usr/bin/systemctl reload nginx # 重载比 restart 更友好 + # 若必须重启:sudo /usr/bin/systemctl restart nginx + + echo "Nginx 操作完成" """ } } From cc672b71786301ae71f81cd83824ec63eef5ca61 Mon Sep 17 00:00:00 2001 From: panjunjie <46790855@qq.com> Date: Fri, 12 Dec 2025 20:59:17 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BB=8E=E8=8A=82?= =?UTF-8?q?=E7=82=B9=E9=83=A8=E7=BD=B2=E6=96=87=E4=BB=B6=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加从节点部署文件同步逻辑 --- Jenkinsfile | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index f51fe67..e73b5f8 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -28,17 +28,6 @@ pipeline { rm -rf ${DEPLOY_DIR}/* cp -r ${DIST_PATH}/* ${DEPLOY_DIR}/ echo "主节点部署完成:${DIST_PATH} → ${DEPLOY_DIR}" - - # 2. Nginx 操作(优先热重载,无停机) - echo "检查 Nginx 配置语法..." - /usr/sbin/nginx -t # 先校验配置,避免重载失败 - - echo "热重载 Nginx 配置..." - # Debian systemd 下的正确写法(绝对路径+sudo,需提前配置免密) - sudo /usr/bin/systemctl reload nginx # 重载比 restart 更友好 - # 若必须重启:sudo /usr/bin/systemctl restart nginx - - echo "Nginx 操作完成" """ } }