You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
slms/docs/DEBUG_CHECKLIST.md

5.0 KiB

🔍 调试清单 - 制品和邮件问题

问题现状

  • 流水线通过
  • 没有制品
  • 没有邮件

🔧 调试步骤

1. 检查构建日志

在 Jenkins 构建日志中搜索以下关键字:

制品相关

检查制品文件...
✓ 找到 slms-cli.jar
✓ 找到 slms-gui.jar
✓ 找到 slms-web.jar
✓ 找到 slms-debug.apk

如果显示 "✗ 未找到"

  • 说明打包失败,但没有报错
  • 检查并行打包阶段的日志

邮件相关

========== 发送成功通知邮件 ==========
准备发送成功邮件到: 602924803@qq.com, 1280568951@qq.com
✓ 成功通知邮件已发送

如果没有这些日志

  • 说明没有进入 post { success } 部分
  • 检查 currentBuild.result 的值

2. 检查并行打包阶段

查看每个打包 stage 的输出:

CLI 打包

========== 打包 CLI 应用 (JAR) ==========
mvn clean package -Pcli -DskipTests
✓ 找到 CLI shaded JAR
✓ CLI JAR 打包完成: slms-cli.jar

GUI 打包

========== 打包 GUI 应用 (JAR) ==========
mvn clean package -Pgui -DskipTests
✓ 找到 GUI shaded JAR
✓ GUI JAR 打包完成: slms-gui.jar

Web 打包

========== 打包 Web 应用 (JAR) ==========
mvn clean package -Pweb -DskipTests
✓ Web JAR 打包完成: slms-web.jar

Android 打包

========== 打包 Android 应用 (APK) ==========
call gradlew.bat :android:assembleDebug
✓ Android APK 打包完成: slms-debug.apk

3. 检查归档阶段

========== 归档构建制品 ==========
检查制品文件...
✓ 找到 slms-cli.jar
✓ 找到 slms-gui.jar
✓ 找到 slms-web.jar
✓ 找到 slms-debug.apk
✓ 制品归档完成

4. 检查 always 部分

========== 构建完成,检查状态 ==========
当前构建结果: SUCCESS (或 null)
当前构建状态: SUCCESS
✅ 构建成功,应该发送成功邮件
========== 检查制品文件 ==========
✓ slms-cli.jar 存在
✓ slms-gui.jar 存在
✓ slms-web.jar 存在
✓ slms-debug.apk 存在

🐛 常见问题

问题 1: 制品文件不存在

可能原因

  1. 并行打包时,每个 stage 在不同的工作目录
  2. Maven profile 没有生成正确的文件名
  3. 文件复制失败

解决方法

// 在每个打包 stage 后添加
bat 'dir target'  // 查看 target 目录内容

问题 2: 没有进入 post success

可能原因

  1. currentBuild.result 不是 SUCCESSnull
  2. 某个 stage 设置了 currentBuild.result = 'UNSTABLE'

检查方法 在 always 部分查看:

当前构建结果: UNSTABLE  // 如果是这个,会进入 unstable 而不是 success

问题 3: 邮件发送失败

可能原因

  1. Jenkins 邮件配置不正确
  2. SMTP 服务器连接失败
  3. emailext 插件未安装

检查方法

  1. Jenkins → 系统管理 → 系统配置 → 邮件通知
  2. 测试邮件配置
  3. 查看构建日志中的错误信息

📋 验证清单

下次构建后,按顺序检查:

  • Stage 6.1.1: CLI JAR 打包成功
  • Stage 6.1.2: GUI JAR 打包成功
  • Stage 6.1.3: Web JAR 打包成功
  • Stage 6.1.4: Android APK 打包成功
  • Stage 7: 归档制品成功4 个文件都找到
  • Stage 8: 推送到头歌成功
  • Always: 显示 " 构建成功,应该发送成功邮件"
  • Always: 4 个制品文件都存在
  • Post Success: 进入成功邮件发送
  • Post Success: 显示 "✓ 成功通知邮件已发送"
  • 邮箱: 收到邮件

🔍 关键日志位置

制品检查

Stage: 7. 归档制品
→ 检查制品文件...
→ ✓ 找到 slms-cli.jar

邮件发送

Post Actions: success
→ ========== 发送成功通知邮件 ==========
→ 准备发送成功邮件到: ...
→ ✓ 成功通知邮件已发送

构建状态

Post Actions: always
→ 当前构建结果: SUCCESS
→ ✅ 构建成功,应该发送成功邮件

🚀 下一步

  1. 提交更改
git add Jenkinsfile docs/DEBUG_CHECKLIST.md
git commit -m "debug: 添加制品和邮件调试信息"
git push
  1. 触发构建:推送后自动触发

  2. 查看日志

    • 搜索 "检查制品文件"
    • 搜索 "发送成功通知邮件"
    • 搜索 "当前构建结果"
  3. 根据日志判断

    • 如果制品不存在 → 检查打包阶段
    • 如果没有邮件日志 → 检查 post 部分
    • 如果有错误信息 → 根据错误修复

📝 预期输出

成功的构建应该显示

✓ CLI JAR 打包完成: slms-cli.jar
✓ GUI JAR 打包完成: slms-gui.jar
✓ Web JAR 打包完成: slms-web.jar
✓ Android APK 打包完成: slms-debug.apk
✓ 找到 slms-cli.jar
✓ 找到 slms-gui.jar
✓ 找到 slms-web.jar
✓ 找到 slms-debug.apk
✓ 制品归档完成
✅ 构建成功,应该发送成功邮件
✓ slms-cli.jar 存在
✓ slms-gui.jar 存在
✓ slms-web.jar 存在
✓ slms-debug.apk 存在
========== 发送成功通知邮件 ==========
✓ 成功通知邮件已发送到: 602924803@qq.com, 1280568951@qq.com