3. 制品晋级核心概念:Stage、Promotion、Approval、Gate 的定义与关系
在 Nexus Repository Manager 的企业级制品管理中,制品晋级(Promotion)并非简单的文件复制,而是一套由 Stage(阶段)、Promotion(晋级)、Approval(审批) 和 Gate(关卡) 四个核心概念构成的严谨流程体系。理解这四个要素的定义及其相互关系,是设计可靠晋级审批流的基础。
3.1 核心概念定义
| 概念 | 英文 | 定义 | 类比(软件交付) |
|---|---|---|---|
| 阶段 | Stage | 制品在生命周期中所处的逻辑存储与验证容器。每个阶段对应一个独立的仓库或仓库组,代表制品的成熟度等级。 | 开发环境 → 测试环境 → 预发布环境 → 生产环境 |
| 晋级 | Promotion | 将制品从一个阶段(仓库)移动到下一个阶段(仓库)的自动化或手动操作行为。晋级是流程的执行动作。 | 代码从 Dev 分支合并到 Test 分支 |
| 审批 | Approval | 对晋级操作进行人工或自动校验的决策点。审批结果决定晋级是否被允许执行。 | 测试经理在测试报告上签字 |
| 关卡 | Gate | 一组预定义的质量规则和审批条件的集合。关卡是晋级流程中的检查点,只有通过所有规则才能触发晋级。 | CI 流水线中的质量门禁(代码扫描、单元测试通过率) |
关键区分: Stage 是“位置”,Promotion 是“动作”,Approval 是“决策”,Gate 是“规则集合”。四个概念共同构成制品晋级的完整闭环。
3.2 四者关系模型
下图展示了 Stage、Gate、Approval 与 Promotion 在制品晋级流程中的典型协作关系。制品从左侧的初始阶段开始,依次经过多个 Gate 检查,获得 Approval 后,通过 Promotion 动作进入下一 Stage。
3.3 概念间的逻辑关系
- Stage 是 Gate 的载体: 每个 Stage 入口或出口都可以绑定一个或多个 Gate。Gate 中定义的规则决定了制品能否离开当前 Stage 或进入下一 Stage。
- Gate 触发 Approval: 当 Gate 中的所有规则(如漏洞扫描、质量阈值)通过后,系统自动或人工触发 Approval 流程。Approval 是 Gate 检查通过后的决策输出。
- Approval 驱动 Promotion: 只有获得 Approval 后,Promotion 动作才会被真正执行。Promotion 将制品从源 Stage 的仓库复制/移动到目标 Stage 的仓库。
- Promotion 改变 Stage: 一次成功的 Promotion 意味着制品从一个 Stage 晋级到下一个 Stage,同时制品的元数据(如晋级时间、审批人、晋级路径)被记录在 Nexus 的资产属性中。
最佳实践: 在设计晋级流时,建议将 Gate 规则与 Approval 审批人分离。Gate 负责自动化质量检查,Approval 负责人工决策。这样既保证了效率,又保留了人工干预的灵活性。
3.4 典型晋级流程示例
以下是一个包含四个核心概念的完整晋级流程步骤,以 Java JAR 包从开发到生产为例:
- 制品进入 Stage 1(开发仓库): CI 构建完成后,制品自动发布到
snapshots仓库。 - 触发 Gate 1(代码质量门禁): Nexus 自动执行 SonarQube 扫描、单元测试覆盖率检查。若通过,生成“通过”状态。
- 发起 Approval 1(开发经理审批): 系统发送审批通知给开发经理。经理在 Nexus UI 或通过 API 点击“批准”。
- 执行 Promotion 1: 审批通过后,Nexus 将制品从
snapshots仓库晋级到releases仓库(Stage 2)。 - 触发 Gate 2(安全与集成门禁): 在
releases仓库中,Nexus 触发 Dependency Check 和集成测试。若通过,进入下一审批环节。 - 发起 Approval 2(发布经理审批): 发布经理确认制品版本无误后批准。
- 执行 Promotion 2: 制品从
releases仓库晋级到production仓库(Stage 3),完成生产发布。
3.5 概念对比总结
| 维度 | Stage | Gate | Approval | Promotion |
|---|---|---|---|---|
| 本质 | 状态容器 | 规则检查点 | 决策动作 | 数据移动 |
| 触发时机 | 制品创建/晋级时 | 晋级前/后 | Gate 通过后 | Approval 通过后 |
| 执行者 | Nexus 仓库 | 自动化引擎 | 人工 / 自动规则 | Nexus 晋级 API |
| 失败影响 | 制品停留在当前阶段 | 阻止晋级流程 | 晋级被挂起 | 制品未移动 |
| 可配置性 | 仓库类型与权限 | 规则脚本与阈值 | 审批组与通知 | 目标仓库与元数据 |
常见误区: 不要将 Approval 与 Gate 混为一谈。Gate 是“检查”,Approval 是“决策”。一个 Gate 可以包含多个检查项,但最终是否放行仍由 Approval 决定。在自动化程度高的场景中,Approval 可以由规则自动批准,但概念上仍需区分。