变更持续交付模式

适用场景

应用可以设置研发流程,通过变更管理工程交付流程。通常适用于多环境逐级晋级的构建发布流程,严格控制从开发、到测试、到生产的整体持续交付流程。

说明

目前应用变更持续交付模式仅高级版套餐企业可用,了解云效基础功能和高级版专属功能说明

配置应用研发流程

  • 前提条件:按照应用概览的流程提示完成应用代码仓库设置、完成应用部署编排、完成应用环境规划。

  • 进入应用-应用设置-研发流程,点击新建研发流程,填写研发流程名称,选择模板,点击快速创建研发流程。 云效 AppStack 提供一套示例标准研发流程模板(内置开发、测试、生产三个阶段),企业也可以自定义研发流程模板,详见全局设置-变更研发流程模板。应用创建研发流程时将使用所选模板快速初始化,应用还可以按具体场景二次修改。

    • 添加阶段:点击+卡片可以添加一个研发流程阶段。例如,除了开发、测试、生产阶段,应用还需要预发阶段来进行发布前的最后验证,则可以再新建一个预发阶段

    • 编辑阶段:点击已有阶段卡片更多操作,可以修改已有阶段的名称、标签等。例如,企业习惯称测试阶段UAT阶段,则可以修改阶段名称。

    • 删除阶段:点击已有阶段卡片更多操作,可以删除一个研发流程阶段。例如,应用仅需要开发、生产两个阶段,则可以删除测试阶段。

  • 每个应用可以创建多套研发流程,以适应不同的发布场景。例如,创建一套标准研发流程用于日常研发,创建一套紧急发布流程用于线上问题快速修复。

image.png

image.png

编辑阶段下流水线

  • 研发流程每个阶段下关联一条流水线,做具体的任务流程执行。点击阶段卡片可以编辑流水线,一条典型的流水线如下:

    • 流水线源:自动填充当前应用代码源和默认分支,不可修改。

    • 构建:用于应用构建制品。可按应用代码语言(如Java、Python等)、应用部署类型(如K8s部署、主机部署)选择相应的构建任务,如Java应用、K8s部署,则选择Java镜像构建。

    • 部署:用于部署 AppStack 应用环境。

      • 环境:在任务步骤中选择待部署的应用环境,详见环境管理。

      • 制品:配置该环境待部署的制品,通常会选择上一步构建阶段的产物。

      • 自定义参数:按需设置本次部署相关参数,参数由应用编排决定。

  • 除此之外,还可以按需设置测试任务、人工卡点等任务。设置完成后,点击保存流水线,在运行到研发流程的该阶段时将运行阶段关联的流水线。

  • 云效示例:Java K8s 应用标准研发流程模板,包含开发阶段测试阶段生产阶段,开发、测试阶段分别执行应用镜像构建部署,生产阶段部署之前增加人工卡点。

image.png

设置变更集成方式

  • 变更集成方式为运行到某阶段变更特性分支集成到发布分支的方式,支持以下三种:

    • 自由选择分支:选择此方式,运行本阶段流水线时,可以自由选择任意分支运行发布,变更特性分支需要线下手动合并入目标发布分支,云效 AppStack 会根据目标发布分支 commit 自动计算出本次运行涉及的变更,并更新变更元数据。

    • 手动选择变更:选择此方式,运行本阶段流水线时,需要手动选择待集成的变更列表,云效 AppStack 会将所选变更分支自动合并到系统生成发布分支运行,并更新所选变更的元数据。

    • 运行固定分支:选择此方式,运行本阶段流水线时,只能运行固定的分支进行发布,变更特性分支需要线下手动合并入固定分支。云效 AppStack 会根据固定分支 commit 自动计算出本次运行涉及的变更,并更新变更元数据。

  • 云效示例:Java K8s 应用标准研发流程模板,开发阶段设置为自由选择分支(通常开发环境需要灵活,可以自由部署任意分支进行开发自测), 测试阶段设置为手动选择变更(通常测试环境需要相对稳定进行联调,可以限制只能部署变更特性分支),生产阶段设置为运行固定分支(通常生产环境需要严格管控,只能部署指定发布分支)。

设置变更准入规则

  • 变更准入规则是变更进入某阶段的标准和条件,旨在管控和约束没有达到发布标准的变更,可以实现业务变更按环境逐步晋级,以保障生产安全发布。

    • 选中待设置的阶段,打开变更准入规则开关。

    • 点击添加准入门槛新增一条规则,判断标准可以设置成其他阶段的执行结果是否为成功。注意,这里不要配置成循环依赖。

    • 点击保存准入规则配置完成后,在流水线执行后,会首先判断本次涉及变更是否均已满足准入条件。

  • 云效示例:Java K8s 应用标准研发流程模板,开发阶段无准入门槛,测试阶段需要开发阶段运行结果为成功,生产阶段需要开发、测试阶段的运行结果都为成功。

image.png

新建变更进行研发

研发流程配置完成后,可以进行日常业务需求的研发,从创建一个变更开始。通常一个业务需求或任务对应一个变更,方便业务研发管理和追溯。

新建变更

  • 进入应用-变更列表,或者进入发布管理-变更列表,点击新建变更打开新建变更弹窗,填写以下表单:

    • 变更名称:标识变更

    • 归属应用:应用内创建变更则自动填充当前应用,应用外创建则可以下拉选择自己有权限的应用。

    • 分支名称

      • 代码仓库为 CodeUp 时,支持选择已有分支新建分支两种方式,新建分支支持系统自动分配分支名称,也支持自定义分支名称。

      • 代码仓库为通用 Git 时,仅支持填写已有分支

    • 关联工作项:点击添加关联,自动推荐我相关的工作项,支持输入工作项标题搜索,点击工作项添加关联。

    • 负责人:自动填充当前成员

  • 点击确定创建变更,返回变更列表。

image.png

变更列表

  • 进入应用-变更列表,展示本应用下的所有变更;进入发布管理-变更,展示本企业下的所有变更。默认展示我参与的开发中的变更,点击可以切换查看全部变更。

    • 变更列表展示变更名称分支负责人创建时间更新时间变更状态等信息。

    • 支持按变更名称模糊搜索,支持按变更状态所属应用负责人过滤。

image.png

查看变更详情

  • 进入应用-变更列表,或者进入发布管理-变更列表,点击目标变更,打开变更详情。

    • 基本信息:展示变更的名称、状态、负责人、变更分支,以及分支上最新提交commit。

    • 关联工作项:展示变更关联的工作项标题、优先级、状态、负责人等

    • 变更元数据:展示当前变更在研发流程上运行产生的元数据,元数据为当前变更在研发流程各个阶段的流水线运行结果。

image.png

运行研发流程进行变更发布

进入应用-研发流程,按阶段依次运行流水线部署应用服务到相应环境,逐环境进行验证后发布生产,实现业务变更按环境逐步晋级。 切换到指定阶段,点击运行阶段流水线,打开运行配置弹窗,设置参数后即可运行。

运行阶段流水线

  • 以云效示例Java K8s 应用标准研发流程为例,各阶段点击运行流水线,运行配置如下:

    • 开发阶段自由选择分支,无准入门槛。

    • 测试阶段手动选择变更,需要开发阶段运行结果为成功。

    • 生产阶段运行固定分支,需要开发阶段、测试阶段的运行结果都为成功。

image.pngimage.pngimage.png

查看流水线运行详情

  • 以云效示例Java K8s 应用标准研发流程为例,各阶段流水线运行详情如下:

    • 开发阶段:自由选择分支。

      • 变更管理器:云效 AppStack 会在阶段流水线前自动增加变更管理器步骤,用于处理变更计算和分支合并等。当变更集成方式为自由选择分支时,系统会根据代码分支 commit 自动计算出涉及变更。

      • 依次执行后续构建、部署步骤。可以查看构建部署日志,点击部署单详情可以跳转部署单详情页面查看部署进度。

image.png

  • 测试阶段:手动选择变更,准入条件为开发阶段运行结果为成功。

    • 变更管理器:将所选待集成变更特性分支自动合并到系统自动生成发布分支。

    • 集成变更详情:展示发布分支, 展示变更列表:变更名称、分支、状态、Commit ID、负责人。

    • 变更准入卡点:根据本阶段配置的准入条件,判断准入是否通过,不通过展示失败详情,展示变更元数据的期望值、实际值。

    • 依次后续构建、部署步骤。

image.png

image.png

  • 生产阶段:运行固定分支,准入条件为开发阶段、测试阶段的运行结果都为成功。

使用变更集追溯完整需求

变更集通常用来实现多个相关应用、多个相关变更协同发布,从业务需求整体维度跟进业务进展。

新建变更集

  • 进入发布管理-变更集列表,点击新建变更

    • 变更集名称:用于标识

    • 关联变更:点击添加关联待协同发布的变更。

    • 负责人:通常用于协调统一发布。 点击确定创建变更集,返回变更集列表。

image.png

变更集列表

  • 进入发布管理-变更集列表,默认展示我参与的、开发中的变更集,点击可以切换查看全部变更集。

    • 展示变更集名称、创建时间、负责人、关联变更、状态

    • 点击进入变更集详情页。

image.png

变更集详情

  • 进入发布管理-变更集列表,找到目标变更集,点击进入变更集详情页。

    • 基本信息:展示变更集名称、负责人、创建时间、最后修改人、最后修改时间

    • 变更列表:按应用分组展示本变更集关联的变更,展示每个变更在研发流程下的运行元数据,用于跟进变更当前状态。

    • 关联变更:通常用于需要更多其他变更联合发布场景,可以添加更多关联变更。

    • 移除变更:通常用于某个变更未达到发布标准,不跟着本变更集一起发布的场景,可以移除某个变更。

    • 设置变更集成员:通常用于多人协同发布,可以给变更集设置成员,

    • 关闭变更集:当变更集下的所有变更都已经完成发布时,则可以关闭变更集,完成本次需求发布。

image.png