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.
8.0 KiB
8.0 KiB
Jenkins 流水线测试指南
目的: 测试完整的 CI/CD 流水线,验证所有阶段正常工作
测试前准备
1. 确认所有前置任务已完成
- 任务 1-14: Jenkinsfile 已更新
- 任务 15: Git 性能优化已配置
- 任务 16: SonarQube 项目已配置
- 任务 17: 代码已推送到 Gitea
- 任务 18: 头歌远程仓库已配置
- 任务 19: Jenkins 任务已配置
2. 确认服务运行状态
# Jenkins
http://localhost:8080
# Gitea
http://localhost:3000
# SonarQube
http://localhost:9000
测试步骤
步骤 1: 触发流水线构建
方法 1: 通过 Web UI
- 访问:
http://localhost:8080/job/SLMS/ - 点击左侧 Build Now (立即构建)
- 观察构建队列
方法 2: 通过 Jenkins CLI
java -jar jenkins-cli.jar -s http://localhost:8080/ -auth USER:TOKEN build SLMS
方法 3: 通过 API
curl -X POST http://localhost:8080/job/SLMS/build --user USER:TOKEN
步骤 2: 监控构建过程
- 点击构建编号(如 #1, #2)
- 点击 Console Output (控制台输出)
- 实时查看构建日志
步骤 3: 验证各个阶段
Stage 1: 拉取代码 ✅
验证点:
- 代码拉取时间 < 2 分钟
- 使用浅克隆(depth=1)
- 从 Gitea 拉取成功
- 无
SLMS/子目录错误
日志关键字:
从 Gitea 拉取代码
Cloning repository
Checking out Revision
代码拉取成功
Stage 2: Maven 编译 ✅
验证点:
- 编译成功
- 在根目录执行(无
dir('SLMS')) - target 目录已创建
日志关键字:
Maven 编译 SLMS 项目
mvn clean compile test-compile
BUILD SUCCESS
项目编译成功
Stage 3: 运行测试 ✅
验证点:
- 测试执行完成
- 测试报告生成
- 路径正确(
**/target/surefire-reports/*.xml)
日志关键字:
运行单元测试
mvn test
测试执行完成
Stage 4: SonarQube 质检 ✅
验证点:
- SonarQube 分析完成
- 项目键为
slms - 分析结果上传成功
日志关键字:
执行 SonarQube 代码质量检测
mvn sonar:sonar
SonarQube 分析完成
Stage 5: 质量门禁 ✅
验证点:
- 质量门禁检查通过
- 状态为 OK
日志关键字:
等待 SLMS-Quality-Gate 质量门禁结果
质量门禁检查通过: OK
Stage 6: 准备打包 ✅
验证点:
- target 目录复制成功
- 创建了 4 份副本(CLI, GUI, Web, Android)
日志关键字:
复制 target 目录用于并行打包
target 目录复制完成(4份)
Stage 7: 四端并行打包 ✅
验证点:
- CLI JAR 生成成功
- GUI JAR 生成成功
- Web WAR 生成成功
- Android APK 生成成功
日志关键字:
打包 CLI 应用 (JAR)
CLI JAR 打包完成: slms-cli.jar
打包 GUI 应用 (JAR + EXE)
GUI JAR 打包完成: slms-gui.jar
打包 Web 应用 (WAR)
Web WAR 打包完成: slms-web.war
打包 Android 应用 (APK)
Android APK 打包完成: slms-debug.apk
Stage 8: 归档制品 ✅
验证点:
- 所有制品已归档
- 路径正确(无
SLMS/前缀) - 可以下载制品
日志关键字:
归档构建制品
制品归档完成
验证方法:
- 访问:
http://localhost:8080/job/SLMS/lastSuccessfulBuild/artifact/ - 检查制品列表:
target/slms-cli.jartarget/slms-gui.jartarget/slms-web.warandroid/build/outputs/apk/debug/slms-debug.apk
Stage 9: 推送头歌 ✅
验证点:
- 源代码推送到 feature-ldl 成功
- 制品推送到 release 成功
日志关键字:
推送源代码到头歌 feature-ldl 分支
源代码推送到 feature-ldl 成功
推送构建制品到头歌 release 分支
制品推送到 release 分支成功
验证方法:
- 访问头歌 feature-ldl 分支:
https://bdgit.educoder.net/pu6zrsfoy/slms/tree/feature-ldl - 访问头歌 release 分支:
https://bdgit.educoder.net/pu6zrsfoy/slms/tree/release
Post: 清理阶段 ✅
验证点:
- 进程清理完成
- 制品文件检查完成
- 邮件发送成功(如果配置)
日志关键字:
流水线执行完成
清理残留进程
检查制品文件
性能验证
1. 代码拉取时间
目标: < 2 分钟
测量方法:
- 查看 Console Output
- 找到 "拉取代码" 阶段的开始和结束时间
- 计算时间差
示例:
[10:00:00] 从 Gitea 拉取代码
[10:01:30] 代码拉取成功
时间: 1分30秒 ✅
2. 完整流水线时间
目标: < 15 分钟(取决于测试数量)
测量方法:
- 查看构建页面的 Duration (持续时间)
- 或查看 Console Output 的总时间
3. 各阶段时间分布
| 阶段 | 预期时间 | 实际时间 | 状态 |
|---|---|---|---|
| 拉取代码 | < 2分钟 | ___ | ___ |
| Maven 编译 | 30-60秒 | ___ | ___ |
| 运行测试 | 1-3分钟 | ___ | ___ |
| SonarQube | 1-2分钟 | ___ | ___ |
| 质量门禁 | 10-30秒 | ___ | ___ |
| 准备打包 | 10-20秒 | ___ | ___ |
| 四端打包 | 3-5分钟 | ___ | ___ |
| 归档制品 | 10-20秒 | ___ | ___ |
| 推送头歌 | 30-60秒 | ___ | ___ |
故障排查
构建失败 - 代码拉取
可能原因:
- Gitea 服务未运行
- 仓库 URL 错误
- 凭据无效
解决方案:
- 检查 Gitea:
http://localhost:3000 - 验证仓库 URL:
http://localhost:3000/gitea/slms.git - 更新 Jenkins 凭据
构建失败 - 编译错误
可能原因:
- 代码有语法错误
- 依赖下载失败
- JDK 版本不匹配
解决方案:
- 本地测试编译:
mvn clean compile - 检查 Maven 仓库连接
- 确认 JDK 版本: Java 21
构建失败 - 测试失败
可能原因:
- 测试用例失败
- 数据库连接问题
- 环境配置问题
解决方案:
- 本地运行测试:
mvn test - 检查测试日志
- 修复失败的测试
构建失败 - SonarQube
可能原因:
- SonarQube 服务未运行
- 项目键配置错误
- Token 无效
解决方案:
- 检查 SonarQube:
http://localhost:9000 - 验证项目键:
slms - 更新 SonarQube Token
构建失败 - 打包
可能原因:
- Profile 配置错误
- 依赖缺失
- 资源文件缺失
解决方案:
- 本地测试打包:
mvn package -Pcli - 检查 pom.xml 配置
- 验证资源文件存在
构建失败 - 推送头歌
可能原因:
- 网络连接问题
- 认证失败
- 仓库权限问题
解决方案:
- 检查网络连接
- 验证头歌凭据
- 确认仓库权限
测试报告
构建信息
- 构建编号: #___
- 构建时间: ___
- 构建结果: SUCCESS / FAILURE / UNSTABLE
- 持续时间: ___
阶段结果
| 阶段 | 状态 | 时间 | 备注 |
|---|---|---|---|
| 拉取代码 | ✅/✗ | ___ | ___ |
| Maven 编译 | ✅/✗ | ___ | ___ |
| 运行测试 | ✅/✗ | ___ | ___ |
| SonarQube | ✅/✗ | ___ | ___ |
| 质量门禁 | ✅/✗ | ___ | ___ |
| 准备打包 | ✅/✗ | ___ | ___ |
| 四端打包 | ✅/✗ | ___ | ___ |
| 归档制品 | ✅/✗ | ___ | ___ |
| 推送头歌 | ✅/✗ | ___ | ___ |
制品验证
- CLI JAR 已生成并归档
- GUI JAR 已生成并归档
- Web WAR 已生成并归档
- Android APK 已生成并归档
- 所有制品可下载
性能验证
- 代码拉取时间 < 2 分钟
- 完整流水线时间合理
- 无明显性能瓶颈
推送验证
- 源代码已推送到头歌 feature-ldl
- 制品已推送到头歌 release
- 可以从头歌访问代码和制品
下一步
完成流水线测试后:
- ✅ 记录测试结果
- ✅ 修复发现的问题
- ✅ 进行验证和文档更新(任务 21)
相关脚本:
scripts/trigger_jenkins_build.bat- 触发构建scripts/monitor_jenkins_build.bat- 监控构建
相关文档:
Jenkinsfile(已更新)docs/JENKINS_CONFIGURATION_GUIDE.md