华为云多环境部署流水线参考架构
【摘要】 多环境(beta/gamma/production)、多华为云账号、多区域、手动审批、自动化部署管道,基于华为云CodeArts流水线实现
1. 用途和受众
1.1 预期用途
- 指导企业在华为云上构建"开发 → 测试 → 生产"多环境部署流水线,实现环境隔离、阶段门禁、制品不可变逐级晋级与可回滚的规范化交付。
- 为售前、解决方案设计、实施和审查提供可重用的多环境持续交付架构模式(CodeArts 原生落地)。
- 作为企业 DevOps 体系建设、应用上云交付包或新应用流水线搭建的架构基础。
- 定义多环境部署在性能、安全、可扩展性、运维和可靠性维度的设计护栏。
1.2 目标受众
- DevOps 平台工程师:负责 CodeArts 流水线分层设计、构建模板开发与工具链集成
- 发布经理:管理多环境发布流程、审批门禁与版本管控策略
- 交付架构师:负责流水线方案落地、环境规划与 CI/CD 体系交付实施
- 安全合规工程师:配置代码扫描、制品安全门禁与合规检查策略
- 企业客户(应用研发团队):评估多环境部署流水线,建立规范化 CI/CD 发布体系
- 合作伙伴与 MSP:参与流水线实施、平台托管与发布运营
2. 参考架构概述
2.1 架构描述
基于华为云 CodeArts 软件开发生产线构建的多环境部署流水线参考架构,按"流水线层 → 制品与质量门禁层 → 环境层"三层组织,覆盖 ① 需求与代码提交 → ② 构建与代码检查 → ③ 制品入库(不可变)→ ④ 开发环境部署与单元测试 → ⑤ 测试环境部署与自动化回归 → ⑥ 人工审批门禁 → ⑦ 生产灰度发布与监控回滚 七步流程。核心做法:一次构建生成不可变制品(同一镜像摘要),经开发、测试逐级晋级,通过人工审批门禁后以灰度/滚动方式发布到生产;开发/测试/生产三套环境独立隔离(多账号或独立 CCE 集群/命名空间、ECS 主机组),环境差异完全通过外置配置(参数组/ConfigMap/环境变量)在部署时注入,回滚基于制品版本分钟级完成。
2.2 业务背景
| 项目 | 描述 |
|---|---|
| 业务问题 | 应用发布靠人工脚本多环境手工部署:环境配置漂移导致"测试通过、生产失败";无统一门禁与审批,变更风险高;制品重复构建、版本不一致;故障后回滚慢 |
| 期望的结果 | 一条流水线贯通开发/测试/生产;同一不可变制品逐级晋级;质量门禁 + 人工审批拦截风险变更;环境配置外置、可按需复制新环境;分钟级版本回滚 |
| 主要用户 | 开发者(提交代码/查看结果)、测试工程师(回归验证)、发布经理(生产审批)、运维工程师(环境与发布运营) |
| 关键制约因素 | 变更管理与合规审批要求(生产变更须审批留痕);现有代码库/构建脚本迁移成本;三套环境的资源与成本预算;网络隔离与账号体系现状 |
| 成功指标 | 生产发布成功率 ≥99%;部署频率提升 ≥3 倍;变更前置时间(提交→生产)≤1 天;生产故障版本回滚时长 ≤10min;环境配置漂移事件为 0 |
2.3 架构优点
- 环境隔离、边界清晰:开发/测试/生产三套环境按多账号或独立 CCE 集群/命名空间、ECS 主机组隔离,权限、网络、数据互不干扰,生产爆炸半径最小化。
- 流水线分段晋升:流水线按环境分段(开发自动部署+单测 → 测试部署+自动化回归 → 人工审批 → 生产灰度/滚动),每段有明确质量门禁,通过才允许晋级。
- 不可变制品逐级晋级:一次构建、一个摘要(digest),同一制品在三个环境间逐级复用、不重新构建,消除环境漂移导致的"测试通过、生产失败"。
- 人工审批门禁:生产晋级必须经发布经理审批(审批意见与记录全程留痕),满足变更管理合规要求;SMN 通知催办避免流程阻塞。
- 环境配置外置:环境差异以参数组/ConfigMap/环境变量形式在部署时注入,制品与配置解耦,复制新环境(如预生产)只需新增配置集。
- 快速回滚:回滚 = 重新部署上一版本制品,无需重新构建,分钟级恢复;灰度/滚动发布保障发布期间服务持续可用。
- 全链路可追溯:CodeArts Pipeline 聚合需求→代码→构建→制品→部署全链路追溯,任一版本在各环境的部署状态与审批记录一目了然。
2.4 设计关注点
| 性能 | 安全 | 可扩展性 | 运维 | 可靠性 |
|---|---|---|---|---|
| 构建缓存与阶段并行缩短构建时长;测试回归套件并行执行;生产灰度批次与观察窗口结合业务高峰设置,避免发布影响峰值 | 三环境权限分离,生产部署最小权限 + 双人复核;制品签名与镜像漏洞扫描门禁;密钥类配置入 KMS/密钥库,严禁入库代码仓库;审批记录不可篡改 | 环境可横向扩展(新增预生产/灰度环境即新增流水线段);新应用通过流水线模板快速复制;多账号隔离按业务线规模化扩展 | 流水线分段可视化,部署历史与审批记录全程可追溯;环境配置外置实现"同一制品、不同参数";CES+SMN 监控告警闭环,发布看板统一 | 回滚基于不可变制品版本,分钟级重部署上一版本;生产滚动/灰度发布保持服务可用;审批门禁防止未验证变更进入生产;制品库禁覆盖防误删 |
2.5 典型架构

华为云多环境部署流水线架构图
2.6 流程描述
- ① 需求与代码提交:输入为需求条目与开发者代码变更;CodeArts Req 管理需求条目并关联代码提交,开发者向 CodeArts Repo 推送代码、创建合并请求(MR),触发流水线启动;输出为可追溯的代码版本与流水线运行实例。
- ② 构建与代码检查:输入为合并后的代码版本;CodeArts Build 编译构建并运行单元测试,CodeArts Check 执行静态代码检查与代码评审门禁,缺陷阻断晋级;输出为通过质量门禁的构建产物与质量报告。
- ③ 制品入库(不可变):输入为构建产物;容器镜像推送 SWR、构件包注册 CodeArts Artifact,版本与摘要(digest)冻结、禁止覆盖,作为三环境复用的唯一制品;输出为不可变制品与版本基线。
- ④ 开发环境部署与单元测试:输入为不可变制品 + 开发环境外置配置;CodeArts Deploy 自动部署到开发环境(CCE 开发命名空间 / 开发 ECS 主机组)并注入开发参数,运行单元测试与集成冒烟;输出为功能验证通过的开发环境版本。
- ⑤ 测试环境部署与自动化回归:输入为同一制品 + 测试环境外置配置;制品晋级部署到测试环境(独立集群/命名空间/主机组),CodeArts TestPlan 执行自动化回归、CodeArts PerfTest 执行性能测试;输出为回归/性能测试报告(生产晋级依据)。
- ⑥ 人工审批门禁:输入为测试报告与晋级申请;CodeArts Pipeline 审批阶段经 SMN 通知发布经理,审核测试报告并批准/驳回,审批意见与操作全程留痕;输出为放行的生产晋级单(或驳回意见)。
- ⑦ 生产灰度发布与监控回滚:输入为已批准制品 + 生产环境外置配置;以灰度/滚动方式发布到生产环境(生产 CCE 集群 / ECS 主机组),CES 持续监控关键指标与告警,异常时自动/手动回滚到上一版本制品;输出为完成发布且持续监控中的生产版本,以及随时可触发的版本回滚能力。
2.7 云服务产品清单
| 分类 | 服务或产品 | 推荐配置 | 官网链接 |
|---|---|---|---|
| 需求与协作 | CodeArts Req 需求管理 | 需求条目/迭代管理,需求 → 代码提交双向关联,状态流转闭环 | CodeArts Req |
| 代码托管 | CodeArts Repo 代码托管 | 分支策略(feature/release/hotfix),MR 强制评审后合入 | CodeArts Repo |
| 代码质量 | CodeArts Check 代码检查 | 静态检查 + 代码评审门禁,高危缺陷阻断合并 | CodeArts Check |
| 编译构建 | CodeArts Build 编译构建 | 一次构建全环境复用,构建缓存提速,产物版本不可变 | CodeArts Build |
| 制品管理 | CodeArts Artifact 制品仓库 | 构件包版本不可变,禁止覆盖/删除,晋级记录可追溯 | CodeArts Artifact |
| 容器镜像 | SWR 容器镜像服务 | 镜像摘要(digest)为唯一制品标识,三环境共用同一镜像,开启防覆盖 | SWR |
| 自动化测试 | CodeArts TestPlan 测试管理 | 自动化回归/接口测试套件,绑定测试环境部署阶段执行 | CodeArts TestPlan |
| 性能测试 | CodeArts PerfTest 性能测试 | 生产晋级前性能基线测试,报告作为审批依据 | CodeArts PerfTest |
| 流水线编排 | CodeArts Pipeline 流水线 | 按环境分段:开发 → 测试 → 人工审批 → 生产;质量门禁 + 审批阶段 + 通知集成 | CodeArts Pipeline |
| 部署发布 | CodeArts Deploy 部署 | 环境级部署模板(主机组/容器),滚动/灰度策略,按制品版本回滚 | CodeArts Deploy |
| 计算(容器) | CCE 云容器引擎 | 三环境独立集群或命名空间隔离,生产集群多可用区高可用 | CCE |
| 计算(主机) | ECS 弹性云服务器 | 主机部署模式:三套环境主机组独立,生产 ≥2 台 + ELB 负载 | ECS |
| 身份与权限 | IAM 统一身份认证 | 按环境分权:开发只写开发环境、生产部署最小权限 + 双人复核 | IAM |
| 监控告警 | CES 云监控 | 生产环境关键指标监控与告警,联动发布回滚决策 | CES |
| 消息通知 | SMN 消息通知 | 审批提醒与告警订阅(邮件/短信/即时消息),催办防阻塞 | SMN |
3. 参考链接
- 产品文档:
- 实施指南:
- 源代码或 IaC:
- 操作手册:
- 安全性和合规性映射:
4. 使用限制
- 环境隔离方式(多账号 vs 同账号独立集群/命名空间/主机组)须在实施前按合规等级与规模选定,投产后变更隔离模式成本高。
- 不可变制品策略要求全链路不重建、不重打标签,须在制品库与镜像仓库同时开启防覆盖,并严禁在目标环境内手工修改。
- 审批门禁的有效性依赖审批人时效,应设置审批 SLA 与 SMN 自动催办/升级机制,避免长期阻塞发布窗口。
- 环境配置外置要求对存量硬编码配置做改造;密钥类配置必须使用 KMS/密钥库管理并定期审计,不得随制品打包。
- 大规模并发构建与多环境并行流水线需规划构建集群资源与配额,建议按环境分级限流。
- 本架构为部署流水线模式;具体应用的容器化/主机化改造、网络与安全组设计须另行按场景参考架构设计。
附录 A. 术语和缩略语
| 术语 | 定义 |
|---|---|
| 部署流水线 | 将代码从提交到生产发布全过程自动化编排的阶段集合(构建、测试、审批、部署) |
| 环境晋升 | 同一制品按 开发 → 测试 → 生产 顺序逐级部署并通过门禁的过程 |
| 不可变制品 | 一次构建后内容冻结的交付物(镜像/构件包),任何环境不重新构建、不覆盖 |
| 镜像摘要(digest) | 容器镜像内容的唯一哈希标识,用于确认各环境部署的是同一制品 |
| 审批门禁 | 流水线中的人工审批阶段,未获批准不得晋级到下一环境 |
| 质量门禁 | 代码检查、单元测试、回归/性能测试等自动化卡点,不达标阻断晋级 |
| 灰度发布 | 先向小比例实例/流量发布新版本,观察指标正常后再全量放量的发布策略 |
| 滚动发布 | 分批替换实例并保持服务持续可用的发布策略 |
| 配置外置 | 环境差异(参数、ConfigMap、环境变量)与制品解耦,在部署时注入 |
| 主机组 | CodeArts Deploy 中按环境划分的目标 ECS 集合,作为主机部署的目标单元 |
| 回滚 | 将环境重新部署为上一版本制品以恢复服务的操作,无需重新构建 |
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)