适用场景
应用可以设置研发流程,通过变更管理工程交付流程。通常适用于多环境逐级晋级的构建发布流程,严格控制从开发、到测试、到生产的整体持续交付流程。
目前应用变更持续交付模式仅高级版套餐企业可用,了解云效基础功能和高级版专属功能说明。
配置应用研发流程
前提条件:按照应用概览的流程提示完成应用代码仓库设置、完成应用部署编排、完成应用环境规划。
进入应用-应用设置-研发流程,点击新建研发流程,填写研发流程名称,选择模板,点击快速创建研发流程。 云效 AppStack 提供一套示例标准研发流程模板(内置开发、测试、生产三个阶段),企业也可以自定义研发流程模板,详见全局设置-变更研发流程模板。应用创建研发流程时将使用所选模板快速初始化,应用还可以按具体场景二次修改。
添加阶段:点击+卡片可以添加一个研发流程阶段。例如,除了开发、测试、生产阶段,应用还需要预发阶段来进行发布前的最后验证,则可以再新建一个预发阶段。
编辑阶段:点击已有阶段卡片更多操作,可以修改已有阶段的名称、标签等。例如,企业习惯称测试阶段为UAT阶段,则可以修改阶段名称。
删除阶段:点击已有阶段卡片更多操作,可以删除一个研发流程阶段。例如,应用仅需要开发、生产两个阶段,则可以删除测试阶段。
每个应用可以创建多套研发流程,以适应不同的发布场景。例如,创建一套标准研发流程用于日常研发,创建一套紧急发布流程用于线上问题快速修复。
编辑阶段下流水线
研发流程每个阶段下关联一条流水线,做具体的任务流程执行。点击阶段卡片可以编辑流水线,一条典型的流水线如下:
流水线源:自动填充当前应用代码源和默认分支,不可修改。
构建:用于应用构建制品。可按应用代码语言(如Java、Python等)、应用部署类型(如K8s部署、主机部署)选择相应的构建任务,如Java应用、K8s部署,则选择Java镜像构建。
部署:用于部署 AppStack 应用环境。
环境:在任务步骤中选择待部署的应用环境,详见环境管理。
制品:配置该环境待部署的制品,通常会选择上一步构建阶段的产物。
自定义参数:按需设置本次部署相关参数,参数由应用编排决定。
除此之外,还可以按需设置测试任务、人工卡点等任务。设置完成后,点击保存流水线,在运行到研发流程的该阶段时将运行阶段关联的流水线。
云效示例:Java K8s 应用标准研发流程模板,包含开发阶段、测试阶段、生产阶段,开发、测试阶段分别执行应用镜像构建部署,生产阶段部署之前增加人工卡点。
设置变更集成方式
变更集成方式为运行到某阶段变更特性分支集成到发布分支的方式,支持以下三种:
自由选择分支:选择此方式,运行本阶段流水线时,可以自由选择任意分支运行发布,变更特性分支需要线下手动合并入目标发布分支,云效 AppStack 会根据目标发布分支 commit 自动计算出本次运行涉及的变更,并更新变更元数据。
手动选择变更:选择此方式,运行本阶段流水线时,需要手动选择待集成的变更列表,云效 AppStack 会将所选变更分支自动合并到系统生成发布分支运行,并更新所选变更的元数据。
运行固定分支:选择此方式,运行本阶段流水线时,只能运行固定的分支进行发布,变更特性分支需要线下手动合并入固定分支。云效 AppStack 会根据固定分支 commit 自动计算出本次运行涉及的变更,并更新变更元数据。
云效示例:Java K8s 应用标准研发流程模板,开发阶段设置为自由选择分支(通常开发环境需要灵活,可以自由部署任意分支进行开发自测), 测试阶段设置为手动选择变更(通常测试环境需要相对稳定进行联调,可以限制只能部署变更特性分支),生产阶段设置为运行固定分支(通常生产环境需要严格管控,只能部署指定发布分支)。
设置变更准入规则
变更准入规则是变更进入某阶段的标准和条件,旨在管控和约束没有达到发布标准的变更,可以实现业务变更按环境逐步晋级,以保障生产安全发布。
选中待设置的阶段,打开变更准入规则开关。
点击添加准入门槛新增一条规则,判断标准可以设置成其他阶段的执行结果是否为成功。注意,这里不要配置成循环依赖。
点击保存准入规则配置完成后,在流水线执行后,会首先判断本次涉及变更是否均已满足准入条件。
云效示例:Java K8s 应用标准研发流程模板,开发阶段无准入门槛,测试阶段需要开发阶段运行结果为成功,生产阶段需要开发、测试阶段的运行结果都为成功。
新建变更进行研发
研发流程配置完成后,可以进行日常业务需求的研发,从创建一个变更开始。通常一个业务需求或任务对应一个变更,方便业务研发管理和追溯。
新建变更
进入应用-变更列表,或者进入发布管理-变更列表,点击新建变更打开新建变更弹窗,填写以下表单:
变更名称:标识变更
归属应用:应用内创建变更则自动填充当前应用,应用外创建则可以下拉选择自己有权限的应用。
分支名称:
代码仓库为 CodeUp 时,支持选择已有分支和新建分支两种方式,新建分支支持系统自动分配分支名称,也支持自定义分支名称。
代码仓库为通用 Git 时,仅支持填写已有分支
关联工作项:点击添加关联,自动推荐我相关的工作项,支持输入工作项标题搜索,点击工作项添加关联。
负责人:自动填充当前成员
点击确定创建变更,返回变更列表。
变更列表
进入应用-变更列表,展示本应用下的所有变更;进入发布管理-变更,展示本企业下的所有变更。默认展示我参与的、开发中的变更,点击可以切换查看全部变更。
变更列表展示变更名称、分支、负责人、创建时间、更新时间、变更状态等信息。
支持按变更名称模糊搜索,支持按变更状态、所属应用、负责人过滤。
查看变更详情
进入应用-变更列表,或者进入发布管理-变更列表,点击目标变更,打开变更详情。
基本信息:展示变更的名称、状态、负责人、变更分支,以及分支上最新提交commit。
关联工作项:展示变更关联的工作项标题、优先级、状态、负责人等
变更元数据:展示当前变更在研发流程上运行产生的元数据,元数据为当前变更在研发流程各个阶段的流水线运行结果。
运行研发流程进行变更发布
进入应用-研发流程,按阶段依次运行流水线部署应用服务到相应环境,逐环境进行验证后发布生产,实现业务变更按环境逐步晋级。 切换到指定阶段,点击运行阶段流水线,打开运行配置弹窗,设置参数后即可运行。
运行阶段流水线
以云效示例Java K8s 应用标准研发流程为例,各阶段点击运行流水线,运行配置如下:
开发阶段自由选择分支,无准入门槛。
测试阶段手动选择变更,需要开发阶段运行结果为成功。
生产阶段运行固定分支,需要开发阶段、测试阶段的运行结果都为成功。
查看流水线运行详情
以云效示例Java K8s 应用标准研发流程为例,各阶段流水线运行详情如下:
开发阶段:自由选择分支。
变更管理器:云效 AppStack 会在阶段流水线前自动增加变更管理器步骤,用于处理变更计算和分支合并等。当变更集成方式为自由选择分支时,系统会根据代码分支 commit 自动计算出涉及变更。
依次执行后续构建、部署步骤。可以查看构建部署日志,点击部署单详情可以跳转部署单详情页面查看部署进度。
测试阶段:手动选择变更,准入条件为开发阶段运行结果为成功。
变更管理器:将所选待集成变更特性分支自动合并到系统自动生成发布分支。
集成变更详情:展示发布分支, 展示变更列表:变更名称、分支、状态、Commit ID、负责人。
变更准入卡点:根据本阶段配置的准入条件,判断准入是否通过,不通过展示失败详情,展示变更元数据的期望值、实际值。
依次后续构建、部署步骤。
生产阶段:运行固定分支,准入条件为开发阶段、测试阶段的运行结果都为成功。
使用变更集追溯完整需求
变更集通常用来实现多个相关应用、多个相关变更协同发布,从业务需求整体维度跟进业务进展。
新建变更集
进入发布管理-变更集列表,点击新建变更:
变更集名称:用于标识
关联变更:点击添加关联待协同发布的变更。
负责人:通常用于协调统一发布。 点击确定创建变更集,返回变更集列表。
变更集列表
进入发布管理-变更集列表,默认展示我参与的、开发中的变更集,点击可以切换查看全部变更集。
展示变更集名称、创建时间、负责人、关联变更、状态
点击进入变更集详情页。
变更集详情
进入发布管理-变更集列表,找到目标变更集,点击进入变更集详情页。
基本信息:展示变更集名称、负责人、创建时间、最后修改人、最后修改时间
变更列表:按应用分组展示本变更集关联的变更,展示每个变更在研发流程下的运行元数据,用于跟进变更当前状态。
关联变更:通常用于需要更多其他变更联合发布场景,可以添加更多关联变更。
移除变更:通常用于某个变更未达到发布标准,不跟着本变更集一起发布的场景,可以移除某个变更。
设置变更集成员:通常用于多人协同发布,可以给变更集设置成员,
关闭变更集:当变更集下的所有变更都已经完成发布时,则可以关闭变更集,完成本次需求发布。