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

219 lines
5.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 🔍 调试清单 - 制品和邮件问题
## 问题现状
- ✅ 流水线通过
- ❌ 没有制品
- ❌ 没有邮件
## 🔧 调试步骤
### 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. 文件复制失败
**解决方法**
```groovy
// 在每个打包 stage 后添加
bat 'dir target' // 查看 target 目录内容
```
### 问题 2: 没有进入 post success
**可能原因**
1. `currentBuild.result` 不是 `SUCCESS``null`
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. **提交更改**
```bash
git add Jenkinsfile docs/DEBUG_CHECKLIST.md
git commit -m "debug: 添加制品和邮件调试信息"
git push
```
2. **触发构建**:推送后自动触发
3. **查看日志**
- 搜索 "检查制品文件"
- 搜索 "发送成功通知邮件"
- 搜索 "当前构建结果"
4. **根据日志判断**
- 如果制品不存在 → 检查打包阶段
- 如果没有邮件日志 → 检查 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
```