
# 通过流水线参数串联编译构建服务和部署服务
#### 方案概述
使用编译构建生成软件包并通过部署服务部署时，手动配置获取软件包容易导致软件包不一致，且页面跳转多操作繁琐。通过流水线参数串联编译构建服务和部署服务，将参数传递给构建任务和部署任务，实现任务间数据流动的统一，只需要配置好流水线参数，即可完成构建、部署任务的数据拉通。
#### 操作流程
本文以版本号参数为例，介绍如何将流水线参数传递给编译构建任务和部署应用，基本操作流程如下：
表1操作流程说明 
| **流程**                                                      | **说明**                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|
| [新建编译构建任务] | 新建编译构建任务，新增版本号参数，并在构建步骤引用该参数。                                                                                                                                                                                                                                                                                                                              |
| [新建部署应用]   | 新建部署任务，新增软件包参数，并在部署步骤引用该参数。                                                                                                                                                                                                                                                                                                                                |
| [新建并执行流水线]    | 新建流水线，新增版本号参数，并在流水线上添加编译构建任务及部署应用。 - 在编译构建任务的版本号参数引用流水线版本号参数。  - 在部署应用软件包参数引用流水线版本号参数。   |
| [查看编译构建和部署结果] | 分别查看编译构建结果和部署结果。 - 编译构建包版本号为流水线传递的动态参数。  - 部署任务成功获取软件包。                                    |
   
 #### 准备工作
- 已[开通并授权使用CodeArts Pipeline](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0033.html)。
- [新建项目](https://support.huaweicloud.com/usermanual-devcloud/codearts_01_0027.html)（选择"Scrum"模板，命名为"Project_Test"）。
- [新建代码仓库](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0077.html)（选择"Java Maven Demo"模板，命名为"Repo_Test"）。
- 准备一台具有弹性IP的主机，可以使用已有主机，也可以[购买华为云弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)。
 
 #### 步骤1：新建编译构建任务
1. [登录华为云控制台页面](https://console.huaweicloud.com/console)。
2. 单击页面左上角![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002003775401.png)，在服务列表中选择"开发与运维 \> 流水线 CodeArts Pipeline"。
3. 单击"立即使用"，进入流水线服务首页。
4. 单击顶部导航栏"首页"，在首页搜索[准备工作]中已创建的项目，单击项目名称，进入项目。
5. 在左侧导航栏选择"持续交付 \> 编译构建"，进入编译构建页面。
6. 单击"新建任务"，填写基本信息。 
   表2构建任务基本信息 
   | **参数项** | **说明**                                                                                  |
   |:---|:---|
   | 名称      | 构建任务名称，输入"BuildTask01"。                                                                 |
   | 所属项目    | 构建任务所在的项目，不可更改。                                                                         |
   | 代码源     | 构建任务关联的代码源类型，选择"Repo"。                                                                  |
   | 代码仓     | 构建任务关联的代码仓库，选择[准备工作]中已创建的代码仓"Repo_Test"。 |
   | 默认分支    | 默认使用的分支，选择"master"。                                                                     |
      
   
   
7. 单击"下一步"，选择"Maven系统模板"，单击"确定"。
8. 在"参数设置"页面，新建"releaseversion"参数，单击![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002269163641.png)打开"运行时设置"。
   
   图1新建构建参数   
   ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000001985898056.png "点击放大")
   
   
9. 在"构建步骤"页面，单击"上传软件包到软件发布库"。"发布版本号"配置为参数引用形式"${releaseversion}"，引用releaseversion参数，其他参数保持默认。 
   图2配置构建步骤   
   ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002320946041.png "点击放大")
   
   
10. 单击"保存"，完成构建任务的创建。
 
 #### 步骤2：新建部署应用
1. 在左侧导航栏选择"设置 \> 通用设置 \> 基础资源管理"，单击"新建主机集群"，并将已购买的主机加入集群。
2. 在左侧导航栏选择"持续交付 \> 部署"，进入部署页面。
3. 单击"新建应用"，填写任务名称"DeployTask01"，单击"下一步"，选择"空白模板"，单击"确定"。
4. 单击"参数设置"，切换至"参数设置"页面，新建自定义参数"package_url"，单击![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002234500946.png)打开"运行时设置"。
   
   图3新建部署参数   
   ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002003667289.png "点击放大")
   
   
5. 单击"环境管理"切换至"环境管理"页面，单击"新建环境"，填写环境名称为"Environment01"，单击"保存"，切至"Environment01"资源列表页面，单击"导入主机"，将集群中的主机导入环境。
6. 单击"部署步骤"，切换至"部署步骤"页面，添加"选择部署来源"步骤，参考[表3]配置步骤信息。
   
   图4配置部署步骤   
   ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002003997413.png "点击放大")
    表3配置部署步骤 
   | **参数项**    | **说明**                                                                   |
   |:---|:---|
   | 步骤显示名称     | 步骤名称。保持默认即可。                                                             |
   | 选择源类型      | 软件包的来源。选择"制品仓库"。                                                         |
   | 环境         | 部署环境。选择"Environment01"。                                                  |
   | 选择软件包      | 待部署的软件包。这里将获取构建任务上传至软件发布库的构建包，配置为参数引用形式"${package_url}"，引用package_url参数。 |
   | 下载到主机的部署目录 | 软件包下载到目标主机的路径。输入"/usr/local"。                                            |
   | 控制选项       | 保持默认。                                                                    |
      
   
   
7. 单击"保存"，完成部署应用的创建。
 
 #### 步骤3：新建并执行流水线
1. 在左侧导航栏选择"持续交付 \> 流水线"，进入流水线页面。
2. 单击"新建流水线"，参考[表4]配置流水线信息。
   
    表4流水线基本信息 
   | 配置项  | 配置建议                                                                                   |
   |:---|:---|
   | 名称   | 流水线名称，输入"Pipeline-Test"。                                                               |
   | 流水线源 | 流水线关联的源类型，选择"Repo"。                                                                    |
   | 代码仓  | 流水线关联的代码仓库，选择[准备工作]中已创建的代码仓"Repo_Test"。 |
   | 默认分支 | 默认使用的分支，选择"master"。                                                                    |
      
   
   
3. 配置完基本信息，单击"下一步"，进入"模板选择"页面，选择"空模板"，单击"确定"，进入流水线"任务编排"页面。
4. 单击"参数设置"，在"参数设置"页面，新建自定义参数"releaseversion"，默认值设置为"${TIMESTAMP}"，并单击![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002235046104.png)打开"运行时设置"。
5. 单击"任务编排"，在"任务编排"页面，系统默认生成两个阶段（"流水线源"和"阶段_1"），单击"新建阶段"新增一个阶段"阶段_2"。
6. 单击"阶段_1"的"新建任务"，选择"从空模板新建"，弹出"新建任务"侧滑框。在搜索框搜索"Build构建"插件，将鼠标移动到插件卡片，单击"添加"，选择[已创建的构建任务]，选择与构建任务关联的仓库，releaseversion参数配置为参数引用形式"${releaseversion}"，引用流水线的releaseversion参数。
   
   图5添加构建任务   
   ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002286316316.png "点击放大")
   
   
7. 单击"阶段_2"的"新建任务"，选择"从空模板新建"，弹出"新建任务"侧滑框，在搜索框搜索"Deploy部署"插件，将鼠标移动到插件卡片，单击"添加"，选择[已创建的部署应用]，参考[图6]输入"package_url"路径，并关联[步骤6]的构建任务。
   
   图6添加部署应用   
   ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000001967401150.png "点击放大")
   ![](https://support.huaweicloud.com/bestpractice-pipeline/public_sys-resources/note_3.0-zh-cn.png)
   package_url为软件包地址，即构建包在软件发布库的相对路径（由构建任务名称、发布版本号和构建包拼接而成），且在路径中引用流水线的releaseversion参数。
   
   
8. 任务编排完成后，单击"保存并执行"，开始执行流水线。
 
 #### 步骤4：查看编译构建和部署结果
流水线执行成功后，分别查看流水线参数在编译构建和部署任务之间传递的结果。
- **查看编译构建结果**
  1. 在左侧导航栏选择"制品仓库 \> 软件发布库"。
  
  2. 展开左侧项目导航树，查看构建成功后上传的软件包。
     如图，可以看到相对路径中的版本号即流水线releaseversion参数传递过来的时间戳。
     图7查看软件包   
     ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002004597489.png "点击放大") 
   
- **查看部署结果**
  1. 单击右上角用户名，单击"CodeArts控制台"，进入控制台页面。
  
  2. 单击左上角![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000002004602513.png)，找到"弹性云服务器"服务，单击并进入。
  
  3. 找到本次部署使用的弹性云服务器，单击"操作"列"远程登录"。
  
  4. 选择"其他方式 \> 使用控制台提供的VNC方式登录"，单击"立即登录"。
  
  5. 输入购买弹性云服务器时配置的用户名和密码，回车。
  
  6. 输入如下命令，回车，进入[新建部署应用]时配置的部署目录"/usr/local"。
     ```
     cd /usr/local
     ```
     
  
  7. 输入如下命令，回车，即可查看刚部署成功的软件包，说明参数正常传递部署应用成功获取到了软件包。
     ```
     ls -al
     ```
     图8查看部署结果   
     ![](https://support.huaweicloud.com/bestpractice-pipeline/zh-cn_image_0000001968082404.png "点击放大") 
   
 
