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/PIPELINE_TEST_GUIDE.md

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

  1. 访问: http://localhost:8080/job/SLMS/
  2. 点击左侧 Build Now (立即构建)
  3. 观察构建队列

方法 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. 点击构建编号(如 #1, #2
  2. 点击 Console Output (控制台输出)
  3. 实时查看构建日志

步骤 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/ 前缀)
  • 可以下载制品

日志关键字:

归档构建制品
制品归档完成

验证方法:

  1. 访问: http://localhost:8080/job/SLMS/lastSuccessfulBuild/artifact/
  2. 检查制品列表:
    • target/slms-cli.jar
    • target/slms-gui.jar
    • target/slms-web.war
    • android/build/outputs/apk/debug/slms-debug.apk

Stage 9: 推送头歌

验证点:

  • 源代码推送到 feature-ldl 成功
  • 制品推送到 release 成功

日志关键字:

推送源代码到头歌 feature-ldl 分支
源代码推送到 feature-ldl 成功

推送构建制品到头歌 release 分支
制品推送到 release 分支成功

验证方法:

  1. 访问头歌 feature-ldl 分支: https://bdgit.educoder.net/pu6zrsfoy/slms/tree/feature-ldl
  2. 访问头歌 release 分支: https://bdgit.educoder.net/pu6zrsfoy/slms/tree/release

Post: 清理阶段

验证点:

  • 进程清理完成
  • 制品文件检查完成
  • 邮件发送成功(如果配置)

日志关键字:

流水线执行完成
清理残留进程
检查制品文件

性能验证

1. 代码拉取时间

目标: < 2 分钟

测量方法:

  1. 查看 Console Output
  2. 找到 "拉取代码" 阶段的开始和结束时间
  3. 计算时间差

示例:

[10:00:00] 从 Gitea 拉取代码
[10:01:30] 代码拉取成功
时间: 1分30秒 ✅

2. 完整流水线时间

目标: < 15 分钟(取决于测试数量)

测量方法:

  1. 查看构建页面的 Duration (持续时间)
  2. 或查看 Console Output 的总时间

3. 各阶段时间分布

阶段 预期时间 实际时间 状态
拉取代码 < 2分钟 ___ ___
Maven 编译 30-60秒 ___ ___
运行测试 1-3分钟 ___ ___
SonarQube 1-2分钟 ___ ___
质量门禁 10-30秒 ___ ___
准备打包 10-20秒 ___ ___
四端打包 3-5分钟 ___ ___
归档制品 10-20秒 ___ ___
推送头歌 30-60秒 ___ ___

故障排查

构建失败 - 代码拉取

可能原因:

  1. Gitea 服务未运行
  2. 仓库 URL 错误
  3. 凭据无效

解决方案:

  1. 检查 Gitea: http://localhost:3000
  2. 验证仓库 URL: http://localhost:3000/gitea/slms.git
  3. 更新 Jenkins 凭据

构建失败 - 编译错误

可能原因:

  1. 代码有语法错误
  2. 依赖下载失败
  3. JDK 版本不匹配

解决方案:

  1. 本地测试编译: mvn clean compile
  2. 检查 Maven 仓库连接
  3. 确认 JDK 版本: Java 21

构建失败 - 测试失败

可能原因:

  1. 测试用例失败
  2. 数据库连接问题
  3. 环境配置问题

解决方案:

  1. 本地运行测试: mvn test
  2. 检查测试日志
  3. 修复失败的测试

构建失败 - SonarQube

可能原因:

  1. SonarQube 服务未运行
  2. 项目键配置错误
  3. Token 无效

解决方案:

  1. 检查 SonarQube: http://localhost:9000
  2. 验证项目键: slms
  3. 更新 SonarQube Token

构建失败 - 打包

可能原因:

  1. Profile 配置错误
  2. 依赖缺失
  3. 资源文件缺失

解决方案:

  1. 本地测试打包: mvn package -Pcli
  2. 检查 pom.xml 配置
  3. 验证资源文件存在

构建失败 - 推送头歌

可能原因:

  1. 网络连接问题
  2. 认证失败
  3. 仓库权限问题

解决方案:

  1. 检查网络连接
  2. 验证头歌凭据
  3. 确认仓库权限

测试报告

构建信息

  • 构建编号: #___
  • 构建时间: ___
  • 构建结果: SUCCESS / FAILURE / UNSTABLE
  • 持续时间: ___

阶段结果

阶段 状态 时间 备注
拉取代码 /✗ ___ ___
Maven 编译 /✗ ___ ___
运行测试 /✗ ___ ___
SonarQube /✗ ___ ___
质量门禁 /✗ ___ ___
准备打包 /✗ ___ ___
四端打包 /✗ ___ ___
归档制品 /✗ ___ ___
推送头歌 /✗ ___ ___

制品验证

  • CLI JAR 已生成并归档
  • GUI JAR 已生成并归档
  • Web WAR 已生成并归档
  • Android APK 已生成并归档
  • 所有制品可下载

性能验证

  • 代码拉取时间 < 2 分钟
  • 完整流水线时间合理
  • 无明显性能瓶颈

推送验证

  • 源代码已推送到头歌 feature-ldl
  • 制品已推送到头歌 release
  • 可以从头歌访问代码和制品

下一步

完成流水线测试后:

  1. 记录测试结果
  2. 修复发现的问题
  3. 进行验证和文档更新(任务 21

相关脚本:

  • scripts/trigger_jenkins_build.bat - 触发构建
  • scripts/monitor_jenkins_build.bat - 监控构建

相关文档:

  • Jenkinsfile (已更新)
  • docs/JENKINS_CONFIGURATION_GUIDE.md