
# 配置微服务变更流水线
#### 什么是微服务
微服务是一种软件治理架构，一个大型的复杂软件项目，可以由一个或多个微服务组成，系统中各个微服务之间是松耦合的，各微服务并行独立开发、构建、验证及部署上线。变更是一次研发交付活动的载体，项目的需求研发和漏洞修复都可以放在变更上来实现，一个变更只能属于一个微服务。在微服务中，用户可以创建流水线资源，并将其设置为变更流水线，用于与微服务下的变更资源进行联动，通过变更流水线发布一个或多个变更来实现项目的快速交付。
微服务具备以下优点：
- 边界清晰：每一个微服务只关注一个特定的业务功能，开发和维护单个微服务都相对简单。
- 支持独立部署：单个微服务独立部署更新，不会对整个业务运行造成影响，保证业务7\*24小时在线。
- 技术多样化：微服务可以使用不同的技术栈来实现，不同服务之间通过restful API通信，每个服务可以使用不同的技术框架和不同的存储库来实现。
与普通流水线相比，变更流水线具有以下特点：
- 单个微服务下仅允许存在一条基于变更触发的流水线。
- 变更流水线基于变更触发，运行时会自动创建集成分支，并在运行成功后将集成分支内容合并至主干分支。
- 变更流水线运行成功后会自动更新发布的变更状态。
- 变更流水线仅支持单实例运行。
- 变更流水线不支持事件触发或定时任务触发。
 
#### 约束与限制
- 新建流水线微服务关联流水线源时，可暂不选择流水线源，微服务创建成功后，可根据需要通过单击微服务名称，进入微服务概览页再进行关联。
- 新建流水线微服务关联关联代码仓时，一个代码仓只能关联一个微服务。
- 创建微服务后，更换代码仓库时，如果微服务下存在没有关闭的变更或运行中的流水线，页面会弹出"数据处理"侧滑框，需先关闭所有变更并停止所有运行中的流水线。
 
#### 前提条件
- 已[开通并授权使用CodeArts Pipeline](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0033.html)。

- 当用户角色为"项目管理员"或者"流水线创建者"，可以配置微服务变更流水线，权限配置请参考[授权流水线服务](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0038.html#pipeline_01_0038__section182321614205915)。
 
#### 新建流水线微服务
1. [访问CodeArts Pipeline首页](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0014.html)，进入项目下流水线。
2. 单击"微服务"，进入微服务列表页面。
3. 单击"新建微服务"，进入"新建微服务"页面，配置相关参数。 
   表1新建微服务 
   | **参数项** | **说明**                                                        | 取值样例                |
   |:---|:---|:---|
   | 所属项目    | 微服务所在项目，不可更改。                                                 | 此处默认为"project01"。   |
   | 微服务名称   | 微服务的名称。支持大小写英文字母、数字、"_"，不超过128个字符。                            | 输入"Microservice01"。 |
   | 流水线源    | 流水线代码来源，当前仅支持Repo。                                            | 选择"Repo"。           |
   | 代码仓     | 微服务关联的代码仓库，选择已创建的代码仓库。                                        | 选择"Repo01".         |
   | 默认分支    | 微服务关联的默认分支，执行微服务流水线时默认使用的分支。**变更流水线执行完成后，所有变更特性分支都将会合入默认分支。** | 选择"master"。         |
   | 语言      | 微服务的开发语言，支持Java、Python、Node.js、Go、.Net、C++、PHP。               | 选择"Java"。           |
   | 描述      | 对微服务的描述，长度不超过1024个字符。                                         | -                   |
      
   
   
4. 单击"确定"，弹出"新建微服务成功"提示，完成微服务创建并进入微服务"概览"页。 
   概览页展示微服务的创建人、创建时间、代码源等信息，可修改微服务开发语言、关联的代码仓库和描述信息。
   图1微服务概览页   
   ![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002319089970.png "点击放大")
   
   
5. 返回微服务列表，可以查看已创建的微服务，列表项说明如下。 
   图2微服务列表   
   ![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002318932610.png "点击放大")
   表2微服务列表 
   | **列表项** | **说明**                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|
   | 微服务     | 微服务的名称。                                                                                                                                                                                                                                                                                                                                                   |
   | 创建人     | 创建微服务的用户名。                                                                                                                                                                                                                                                                                                                                                |
   | 创建时间    | 创建微服务的时间，将鼠标悬浮至"创建时间"列，单击![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000001958263225.png)，可以根据创建时间排序微服务。                                                                                                                                                                                                                         |
   | 状态      | 展示微服务当前状态信息，创建后会自动处于激活状态。                                                                                                                                                                                                                                                                                                                                 |
   | 操作      | 单击![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000001958143065.png)可收藏该微服务，收藏成功后图标变为![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000001930904462.png)，再次单击可取消收藏；单击![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000001958263245.png)，可删除该微服务。**删除微服务，微服务内所有变更记录和流水线都将会被删除，请谨慎操作。** |
      
   - 微服务列表展示项目下的所有微服务。
   
   - 支持在搜索栏中输入微服务名称关键字进行搜索。
    
   
   
 
#### 新建微服务变更
管理微服务下的变更信息。
 #### 准备工作
[新建工作项](https://support.huaweicloud.com/usermanual-projectman/devcloud_hlp_00023.html)。
#### 操作步骤
1. [访问CodeArts Pipeline首页](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0014.html)，进入项目下流水线。
2. 单击"微服务"，进入微服务列表页面。
3. 单击微服务名称，进入微服务"概览"页面。
4. 单击"变更"，进入微服务变更列表页面。 
   展示微服务下所有变更信息，单击"所有变更"，选择"我的变更"可以筛选出当前登录用户创建的变更信息。
   
   
5. 单击"新建变更"，进入"基本信息 "页面，配置相关参数。 
   图3新建变更   
   ![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002353087565.png "点击放大")
   表3新建变更 
   | **参数项** | **说明**                                                                    | 取值样例                                                               |
   |:---|:---|:---|
   | 变更标题    | 输入变更标题。长度不超过256个字符。                                                       | 输入"Change01".                                                      |
   | 代码仓     | 微服务关联的代码仓库，不可更改。                                                          | -                                                                  |
   | 代码分支    | 本次变更新需求的开发分支，可从默认分支拉取新分支，也可关联其他已有分支。**变更通过流水线发布成功后，会将代码分支自动合并至微服务的默认分支。** | 选择"关联已有分支"，下拉框选择"master"。                                          |
   | 关联工作项   | 支持关联需求管理中开始态和进行态的工作项。                                                     | 选择[准备工作]中已创建的工作项"BUGFIX"。 |
      
   
   
6. 单击"确定"，弹出"创建成功"提示，完成变更创建并进入"变更详情"页。 
   页面展示变更概览信息、关联工作项、操作历史，还可以对变更执行提交发布、退出发布、撤销变更操作。
   图4变更详情
   ![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002353012901.png "点击放大")
   **变更的发布生命周期为：开发中 \> 待发布 \> 发布中 \> 已发布。**
   **阶段状态为"开发中"的变更，单击"编辑工作项"，可以重新选择工作项。**
   以下详细介绍提交发布、退出发布、撤销变更具体操作：
   - **提交发布**
     针对阶段状态为"开发中"的变更，单击"提交发布"，弹出"提交变更"对话框。
     - 如果微服务下不存在变更流水线，请根据提示[新建变更流水线]。
     
     - 如果微服务下存在变更流水线，直接单击"确定"，可将变更提交到变更流水线的发布列表。
     
     
     提交发布后，变更状态由"开发中"变为"待发布"。
     
   
   - **退出发布**
     针对阶段状态为"待发布"或"发布中"的变更，单击"退出发布"，可将变更从变更流水线的发布列表退出，变更状态变为"开发中"。**阶段状态为"发布中"的变更，如果变更流水线正在运行，则无法退出发布。**
     
   
   
   
   - **撤销变更**
     针对阶段状态为"开发中"的变更，单击"撤销变更"，弹出"撤销变更"对话框。
     单击"确定"，即可将变更状态变为"已撤销"，同时变更被删除。
     
   
   
   
   
 
 #### 新建变更流水线
1. [访问CodeArts Pipeline首页](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0014.html)，进入项目下流水线。
2. 单击"微服务"，进入微服务列表页面。
3. 单击微服务名称，进入微服务"概览"页面。
4. 单击"流水线"，进入微服务流水线列表页面。
5. 单击"新建流水线"，进入"基本信息 "页面，配置相关参数。 
   表4新建流水线 
   | **参数项**      | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 取值样例                                                                                                                                                                                    |
   |:---|:---|:---|
   | 名称           | 流水线的名称，默认根据当前时间生成。支持中文、大小写英文字母、数字、"-"、"_"，长度不超过128个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                       | 输入"Pipeline-1"。                                                                                                                                                                         |
   | 委托URN        | IAM的委托唯一标识。配置后，执行流水线中任务时使用委托身份和权限访问其他云服务，否则使用运行人的身份和权限。                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -                                                                                                                                                                                       |
   | 所属项目         | 微服务所在的项目。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    | 此处默认为"project01"。                                                                                                                                                                       |
   | 流水线源         | 流水线代码来源，微服务下流水线仅支持Repo。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 选择"Repo"。                                                                                                                                                                               |
   | 代码仓          | 微服务关联的代码仓库。**修改微服务的代码仓库，微服务下所有流水线配置的代码仓库会自动更改。**                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 选择"Repo01"。                                                                                                                                                                             |
   | 默认分支         | 微服务关联的默认分支。**修改微服务的默认分支，微服务下所有流水线配置的默认分支会自动更改。**                                                                                                                                                                                                                                                                                                                                                                                                                                                                             | 选择"master"。                                                                                                                                                                             |
   | Repo HTTPS授权 | - 配置授权扩展点以提升代码库操作权限，主要用于微服务变更流水线和部分仓库操作插件。单击"新建授权"，可添加CodeArts Repo HTTPS服务扩展点，配置方法请参考[新建CodeArts服务扩展点](https://support.huaweicloud.com/usermanual-devcloud/devcloud_01_0019.html)。  - 新建CodeArts Repo HTTPS服务扩展点时，如果用户名密码填写错误，会授权失败并导致流水线执行失败。具体问题请参考[常见问题](https://support.huaweicloud.com/pipeline_faq/pipeline_faq_0015.html)。   | 新建授权，示例如下。 ![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002678160651.png "点击放大")  |
   | 别名           | 仓库别名。支持大小写英文字母、数字、"_"，长度不超过128个字符。 **设置别名后可生成仓库对应的系统参数，如："别名_REPOSITORY_NAME"，表示仓库名称。生成的参数可在参数设置页面查看，并在流水线中通过"${参数名}"进行引用。**                                                                                                                                                                                                                                                                                                                                                             | -                                                                                                                                                                                       |
   | 基于变更触发       | 开启"基于变更触发"开关的流水线即为变更流水线，在微服务流水线列表中，变更流水线会被标识为![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002647921036.png)。**单个微服务下仅允许存在一条基于变更触发的流水线。**                                                                                                                                                                                                                                                                                                                                                          | 单击![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002678160653.png)开启"基于变更触发"。                                                                                  |
   | 描述           | 对变更流水线的描述，长度不超过1024个字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | -                                                                                                                                                                                       |
      
   
   
6. 单击"下一步"，进入"选择模板"页面，根据需要选择对应模板，在模板基础上快速新建任务；也可以选择"空白模板"，即不使用模板，直接新建。
7. 单击"确定"，进入"任务编排"页面，根据需要[编排流水线](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0016.html)。
8. 单击"保存"，弹出"保存信息成功"提示，完成变更流水线的保存。
 
#### 执行变更流水线
1. [访问CodeArts Pipeline首页](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0014.html)，进入项目下流水线。
2. 单击"微服务"，进入微服务列表页面。
3. 单击微服务名称，进入微服务"概览"页面。
4. 单击"流水线"，进入微服务流水线列表页面。
5. 单击流水线名称，进入流水线"执行历史"页面。
6. 单击右上角"执行"，弹出"执行配置"对话框，进行如下配置。 
   图5配置变更流水线执行信息   
   ![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002319350896.png "点击放大")
   - 变更列表：变更列表展示阶段状态为"待发布"和"发布中"的变更，运行变更流水线时需要选择一个或多个变更。
   
   - 运行参数配置：如果流水线配置了运行时参数，请根据需要设置参数值并保存，可参考[流水线参数应用示例](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0003.html#pipeline_01_0003__section1963205591416)。
   
   - 执行阶段配置：流水线支持选择任务执行，可以选择一个或多个，默认执行全部任务。
   
   
   
   - 执行描述：填写本次运行的调试信息。
   
   
   
   
7. 配置完成后，单击"执行"，进入变更流水线执行详情页面。 
   图6执行变更流水线   
   ![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002353196113.png "点击放大")
   
   变更流水线运行时会默认添加"合并集成分支"和"合并主干"阶段。
   - 合并集成分支：变更流水线会自动从主干分支拉出一条新分支，并将本次运行变更的所有特性分支集成到该新分支，然后通过这条集成分支来运行流水线。
   
   - 合并主干：将集成分支合并回主干分支。
   
   
   
   
8. 执行完成后，可查看流水线执行结果，执行过程中遇到的问题请参考[常见问题](https://support.huaweicloud.com/pipeline_faq/pipeline_faq_0015.html)。
   
   变更流水线执行成功时，会将本次运行选择的所有变更状态改为"已发布"状态。
   - 单击流水线名称，进入"流水线详情"页面
     - 单击流水线源卡片的"查看更多"，弹出运行变更侧滑框，展示本次流水线运行时选择的变更信息。
     
     - 单击列表内"变更标题"可以跳转到变更详情页面。
      
   
   - 单击"发布列表"页签，切换到"发布列表"页面
     - 发布列表页面展示所有阶段状态为"待发布"和"发布中"的变更。
     
     - 列表支持在搜索栏中输入变更名称关键字进行搜索。
     
     - 单击"操作"列![](https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000001958815417.png)，弹出"退出发布"对话框，单击"确认"会将变更退出变更流水线的发布列表，变更状态重置为"开发中"。**阶段状态为"发布中"的变更，如果变更流水线正在运行，则需要等待变更流水线运行完成或停止变更流水线后才可以退出发布。**
      
   
   
   
   
 
#### 操作视频
本视频介绍如何通过微服务变更流水线完成变更发布。
<video controls="controls" preload="none" id="object19821552054" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/codeartspipeline_video/1765348220302532302.mp4" title="微服务变更发布" poster="https://support.huaweicloud.com/usermanual-pipeline/zh-cn_image_0000002322427646.jpg" height="280.0000" width="500.0000"></video>
