External Delivery Integration Pipeline — 需求文档 & 用户指南
目录
- 背景与目的
- 系统架构概述
- Pipeline 角色说明
- Supervisor Pipeline 需求
- 4.1 功能需求
- 4.2 Pipeline 参数定义
- 4.3 流程阶段描述
- 4.4 测试变体选取逻辑
- Worker Pipeline 需求
- 5.1 功能需求
- 5.2 Pipeline 参数定义
- 5.3 流程阶段描述
- 5.4 测试模式说明
- 数据流与集成依赖
- 构建结果与通知
- 用户使用指南
- 8.1 自动触发(Zuul 集成)
- 8.2 手动触发
- 8.3 Regate(重新触发测试)
- 8.4 跳过测试(skip-pre-verification)
- 8.5 手动干预通过(manual-intervention-pass)
- 8.6 QL2 远程测试触发
- 错误处理与故障排查
- 术语表
1. 背景与目的
External Delivery Integration Pipeline 是 CI/CD 系统中的核心集成测试流水线,用于对来自外部交付(External Delivery)的软件包)在真实硬件或 仿真环境上执行自动化集成测试。
核心目的:
- 在软件合入代码库前进行Gate测试,对外部软件交付包进行自动化兼容性与功能集成验证。
- 通过 Zuul 门控机制(Gerrit Zuul)与 Jenkins 联动,保障代码质量。
- 支持多种无线模块软件线(SW Line。
- 提供结果上传、日志归档、邮件通知及 MongoDB 数据追踪能力。
2. 系统架构概述
┌─────────────────────────────────────────────────────────────┐ │ Gerrit / Zuul 触发 │ │ (ZUUL_REF / ZUULEX_COMMIT_MESSAGE 等参数) │ └──────────────────────────┬──────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Supervisor Pipeline │ │ jenkins-ExternalDelivery-supervisor.jf │ │ │ │ 1. 初始化工作空间 │ │ 2. 解析 SW Line 与 Variant 列表 │ │ 3. 过滤/筛选测试 Variant │ │ 4. 并行触发多个 Worker Job │ └──────┬──────────────┬───────────────────┬───────────────────┘ │ │ │ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ Worker │ │ Worker │ ... │ Worker │ │ XXQL │ │ XXQC │ │ XXEGHA/XXM9 │ └──────────┘ └──────────┘ └──────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Worker Pipeline │ │ jenkins-ExternalDelivery-worker-common.jf │ │ │ │ 1. 初始化工作空间 & 读取 Commit 消息 │ │ 2. 随机选取测试节点(Slave) │ │ 3. 下载软件包(Artifactory) │ │ 4. 解压软件包 │ │ 5. 执行 Robot Framework 集成测试 │ │ 6. 收集测试日志 │ │ 7. 上传日志到 Artifactory │ │ 8. Post 阶段:通知、标记 Zuul Ref 结果 │ └─────────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Artifactory / MongoDB / 邮件 │ │ - 日志 & 报告归档 (mnprf-rfsw-hwsct-local) │ │ - 测试结果写入 MongoDB │ │ - 成功 Zuul Ref 写入 .txt 到 Artifactory │ │ - 邮件通知相关负责人 │ └─────────────────────────────────────────────────────────────┘3. Pipeline 角色说明
| 角色 | 文件 | 职责 |
|---|---|---|
| Supervisor | jenkins-ExternalDelivery-supervisor.jf | 解析输入参数、筛选测试 Variant、并行触发 Worker Job |
| Worker | jenkins-ExternalDelivery-worker-common.jf | 针对单个 Variant 执行完整的软件包下载、安装、Robot 测试、日志收集全流程 |
Supervisor 与 Worker 的命名约定:
- Worker Job 名称由 Supervisor Job 名称派生:
- 普通模式:
<SupervisorJobName>_<Variant>(如ED_SRM7_XXQL) - SRM9 Simics 模式:
<SupervisorJobName>_SIMICS_<Variant>(如ED_SRM9_SIMICS_A9X0_S)
- 普通模式:
4. Supervisor Pipeline 需求
4.1 功能需求
| ID | 需求描述 |
|---|---|
| SUP-FR-001 | 系统应能从 Jenkins Job 名称中自动解析当前 SW Line。 |
| SUP-FR-002 | 系统应支持通过参数VARIANT_SELECTION配置可用的测试变体(Variant)列表。 |
| SUP-FR-003 | 系统应根据ZUUL_CHANGES参数中的分支信息动态筛选测试 Variant 范围。 |
| SUP-FR-004 | 系统应支持针对 L1 交付类型([pre-bCI][L1])自动缩减测试变体列表(仅保留 XXQL)。 |
| SUP-FR-005 | 系统应支持 Regate 场景:解析ZUULEX_CHANGE_COMMENT中的 Variant 关键词,动态调整测试变体。 |
| SUP-FR-006 | 系统应支持跳过已在本轮交付中测试通过的变体(skipRetest+ MongoDB 查询)。 |
| SUP-FR-007 | 系统应并行触发所有选定 Variant 的 Worker Job,不设置failFast(任意一个失败不中断其他)。 |
| SUP-FR-008 | 系统应支持配置最大重试次数(MAX_RETRIES),失败 Worker 可自动重试。 |
| SUP-FR-009 | 系统应将 ZUUL 相关参数完整透传至每个 Worker Job。 |
| SUP-FR-010 | 系统应在 Post 阶段根据实际构建结果更新 Jenkins 构建状态徽章(badge)。 |
4.2 Pipeline 参数定义
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
VARIANT_SELECTION | String | 是 | — | 可用 Variant 列表,逗号分隔,如XXQL,XXQC,XXQQA,XXKUD |
MAX_RETRIES | String | 是 | 0 |