全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网
云效

分支模式下的流水线

更新时间:2017-09-29 20:07:30

当使用向导新建一站式研发解决方案时,若研发模式选择了分支模式(而不是自由模式或Git Flow模式),则向导将自动创建分支模式所特有的流水线。

阅读本文之前,需要首先学习理解开发模式中的分支模式。详细介绍见这里

分支模式流水线的特殊之处概述

每个流程对应一个tab页

进入具体项目后,点击左侧菜单栏中的“流水线”,进入流水线列表页面。每个应用,对应一个流水线条目。点击进入该流水线主页:

分支模式流水线

可以看到,该流水线条目实质上对应三个流程:日常部署、预发部署、正式部署,使用tab页分隔开的。每个tab页中,是该流程的各任务串接。流程的这些任务,一般是围绕着一个运行环境(比如日常测试环境)展开的。

流程附带分支管理能力

在每个流程(比如日常部署流程)的页面,有待集成区(下图黄框)和集成区(下图红框)两个区域:

待集成区与集成区

两个区域,都是feature分支的列表。

待集成区里,是所有已经开发完毕并做了适当检测,可以进行集成和发布的feature分支列表。做集成和发布时,就从这个列表中挑选,哪些合并到当前流程对应的release分支,以便部署和进一步集成测试。

集成区里,就是是从待集成区中挑出来的,(打算)合并到release分支,并随后部署到当前流程相应的运行环境的feature分支列表。这个列表,反映的是当前环境中,包含了哪些代码改动。这些改动将被放在一起测试,进而发布上线。

用户仅需在页面上维护这两个feature分支列表,系统将自动完成release分支的创建和管理,feature分支到release分支的合并等一系列工作。

当前流程对应的release分支(如果有),在页面上显示为“部署分支”,见下图黄色按钮:

部署分支

配置流水线的入口和方法

分支模式下的流水线,不能完全自定义配置其任务,但也可以做适当配置。

它的配置入口和配置方式与自定义流水线不同。请从项目的应用菜单进入相应应用,在页面上方菜单(三级导航)中,选择概述,进而在下级菜单(四级导航)中,选择“流程配置”,即进入流程编辑页面:

分支流水线配置

具体配置方法见这里

以上是分支模式流水线的主要特殊之处的简单介绍。下面分别详述。

日常操作

把feature分支标记为可供集成

在本项目的分支列表页(从本项目的左侧菜单中,“分支”菜单项进入),或者我的分支列表页(点击吊顶“我的”,再点击左侧菜单中“分支”菜单项进入),每个分支左侧,有“提交待发布”按钮。点击可将该分支状态置为“待发布”,也就是说,标记该feature分支已开发完毕并做了适当检测,可以进行集成和发布了。于是,该feature分支就进入了待集成区。

挑选feature分支合入release分支

在特定流程(比如“日常部署”tab页)的待集成区(图中文案“待发布的变更”)勾选打算合并到release分支的feature分支。然后点击“提交发布”按钮,即把这些feature分支加入到集成区,并开始自动合并工作。合并完成后,自动继续进行构建和部署等。

如果当时集成区里还没有feature分支,那么此时还没有一条release分支和当前流程(比如日常部署tab页)相关联,于是系统会基于master分支创建一条新的release分支,然后开始合并工作。

如果当时集成区里以有feature分支,那么此时以有一条release分支和当前流程(比如日常部署tab页)相关联,于是系统就会继续使用这条release分支,开始合并工作。

在合并过程中,除了合入本次新勾选的feature分支,还将逐个检查已在集成区中,也就是曾经合并到release分支的feature分支,看是否又有更新还不在release分支上。如果有,将合入release分支。类似的,master分支也将被检查。以确保,合并完成后,该release分支上,包含了新合入的各feature分支,曾合入的各feature分支,以及master分支上的最新内容。

如果合并过程中出现了需要人工解决的合并冲突,页面将提示如何人工解决冲突并继续流程。

feature分支和/或master分支有更新后,更新release分支并部署

若某(几)条feature分支在合入release分支后,其内容又有了更新(即,又有人向该分支做了git push操作),或者master分支上因为发布上线而有了更新,那么可以点击“重新部署”按钮一键完成:

  • 相应更新release分支,让它包含master分支和各feature分支最新的内容。
  • 把release分支的最新内容,部署到运行环境。

把某个feature分支的内容,从集成中摘除

在集成区该feature分支条目中,点击右侧的“退出”钮,即可实现该目的。

系统将:

  • 基于master分支,自动创建一条新的release分支,并关联到当前流程(比如日常部署tab页)。
  • 把去除了该feature分支后,集成区中的所有Feautre分支再次合并到这条新的release分支。
  • 把release分支的最新内容,部署到运行环境。

因此在效果上,就把该feature分支从集成中摘除了。

把当前集成的全部内容都摘除

点击集成区上方的“退出”钮。于是,当前流程的集成区被清空。同时,当前流程,不再对应任何一条release分支。

把集成内容带入另一个流程

比如,当在日常测试环境的测试结束后,把集成内容带入预发环境进行测试。

每个流程运行完毕,不会自动触发另一个流程的运行。如果想把当前流程的内容带到另一个流程,也就是把当前集成区中的所有feature分支带入另一个流程的集成区,请点击页面上的“进入……”按钮(如果有)。比如“进入预发部署”。见下图:

进入预发部署

点击“进入……”后,系统完成如下操作:

  • 将基于master创建一条新的release分支,并关联到当前进入到的流程。
  • 把前一个流程对应的release分支合并到当前流程对应的这条release分支。
  • 把集成区中所有feature分支合并到这条release分支。这是为了保证feature分支上的任何更新也都反映到新的release分支上。

以上,都是针对进入到的流程(比如“预发部署”tab页)。原流程(比如“日常部署”tab页),没有任何变化:集成区的feature分支列表、对应的release分支及其上的内容,都不会发生变化。

页面上有没有、有哪些“进入……”按钮,可以配置。详见下文。

正式发布后合并回master

正式发布流程中,有一个任务是“合并主干”:

合并主干

流程运行至此时,将把release分支合并到master分支,以使得master分支总是代表最新发布版本。

配置流程

配置流程间流转

应用->概述->流程配置页面,在相应流程条目(比如日常部署)中点击“修改”按钮,见图中红框:

流程配置按钮

于是进入流程配置页面。在此,勾选可由当前流程前往的流程,见图中红框:

流程关联

举个例子,如果在日常部署流程的配置页面上,勾选了“预发部署”,那么日常部署流程的运行页面,就会出现“进入预发部署”按钮。

配置操作权限

在每个流程(比如日常部署流程)的流程配置页面,可以配置不同操作有哪些角色可以完成,见图中红框:

权限设置

其中,变更开发和变更测试,是指feature分支(也就是变更分支)上,定义的开发人员和测试人员。

调整流程tab页顺序

点击下图红框中的移动按钮:

调顺序

然后上下移动到合适位置。

配置自动检测任务

可配置在流程中关联实验室,完成自动检测作为质量卡点。详见这里

本文导读目录