
# 使用CodeArts快速搭建基于ECS部署的代码开发流水线
本文基于CodeArts内置代码仓库，介绍如何使用CodeArts完成项目的开发、构建与部署，实现持续交付。
本文采用的部署方式为ECS部署，适用于传统软件包部署场景。
如果您希望使用容器化部署方法，请参考[使用CodeArts快速搭建基于CCE部署的代码开发流水线](https://support.huaweicloud.com/qs-devcloud/devcloud_qs_0002.html)。
#### 操作视频
因不同版本操作界面可能存在差异，相关视频供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object473715580116" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/codearts_video/1688104522322573771.mp4" title="qs-ecs" poster="https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002530530733.jpg" height="300.0000" width="600.0000"></video>
#### 操作流程
| 操作步骤                                                        | 说明                                                     |
|:---|:---|
| [准备工作]             | 注册华为账号并开通华为云、实名认证，为账户充值，购买ECS。                         |
| [步骤一：开通CodeArts体验版] | CodeArts支持包年/包月计费，使用CodeArts前需要完成购买，开通体验版即可完成本文中的操作流程。 |
| [步骤二：新建项目]       | 项目是使用CodeArts各服务的基础，创建项目后才能完成后续操作。                     |
| [步骤三：新建代码仓库]     | 代码仓库用于项目代码的版本管理，本文使用服务内置的模板"Java Web Demo"创建代码仓库。      |
| [步骤四：检查代码]         | 通过代码检查服务，可以对代码进行静态检查，管控代码质量。                           |
| [步骤五：构建并归档软件包]       | 通过编译构建服务，可将软件的源代码编译成目标文件，并把配置文件和资源文件等打包并归档到软件发布库中。     |
| [步骤六：部署构建包]         | 通过部署服务，可将软件发布库中的软件包部署到虚拟机，并启动运行。                       |
| [步骤七：配置流水线]        | 通过流水线可以将代码检查、编译构建、部署等任务串联起来，当代码发生改变时，自动触发流水线执行，实现持续交付。 |
| [释放资源]              | 按需计费的资源会产生持续计费，为了避免不必要的费用产生，完成体验后，可以释放不再使用的资源。         |
   
 #### 准备工作
- 已[注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)、[实名认证](https://support.huaweicloud.com/usermanual-account/account_auth_00001.html)。

- 参考[自定义购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)，购买满足以下配置的ECS。
  - 计费模式：建议选择按需计费。
  
  - CPU架构：x86计算。
  
  - 节点规格：2vCPUs \| 4GiB或以上规格，系统盘≥80GiB。
  
  - 操作系统：公共镜像-CentOS 7.6
  
  - 弹性公网IP：自动创建。
    ![](https://support.huaweicloud.com/qs-devcloud/public_sys-resources/caution_3.0-zh-cn.png)
    购买ECS将产生计费，计费详情请参考[ECS价格计算器](https://www.huaweicloud.com/pricing.html#/ecs)。
    
  
  
  完成购买后，参考[配置安全组规则](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0030878383.html)，添加两条入方向规则。
  - 协议为"TCP"、端口为"22"、源地址为"0.0.0.0/0"。
  
  - 协议为"TCP"、端口为"8080"、源地址为"0.0.0.0/0"。
   
 
 #### 步骤一：开通CodeArts体验版
1. 进入[购买CodeArts套餐页面](https://console.huaweicloud.com/devcloud/?#/period-new/apply?version=combo_free&package_type=combo)。
2. 选择"体验版"，勾选同意声明，单击"立即开通"。 
   待开通成功，在"华为云码道"页面中显示已开通套餐记录。
   
   
 
 #### 步骤二：新建项目
1. 在CodeArts控制台单击"前往工作台"。
2. 在CodeArts首页找到模板"Scrum"，单击"选用"。
3. 输入项目名称（项目名称不超过128个字符，本文中使用"Demo"），单击"确定"。 
   新建项目成功，页面自动跳转至"工作项"页面。
   
   
 
 #### 步骤三：新建代码仓库
1. 在项目中单击导航栏"代码 \> 代码托管"，进入代码托管服务。
2. 单击"新建仓库"，进入新建仓库页面。
3. 选择"按模板新建"，单击"下一步"。
4. 选择模板"Java Web Demo"，单击"下一步"。
5. 输入代码仓库名称（代码仓库名称需以大小写字母、数字、下划线开头，可包含大小写字母、数字、中划线、下划线、英文句点，但不能以.git、.atom或.结尾，本文中使用"Web-Demo"），单击"确定"。 
   新建代码仓库成功，页面跳转至仓库内，显示仓库的代码文件列表。
   
   
 
 #### 步骤四：检查代码
1. 单击导航栏"代码 \> 代码检查"，进入代码检查服务。 
   页面中显示自动创建的任务"Web-Demo-check"。
   
   
2. 单击![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002241832608.png)，选择"设置"。
3. 单击导航"规则集"，保留规则"JAVASCRIPT"、"JAVA"，其他开关关闭。 
   图1编辑规则集   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002501990300.png)
   
   
4. 单击"执行检查"，启动任务。 
   当页面中显示![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002242026998.png)时，表示任务执行成功。
   如果任务执行失败，请根据报错提示，参考[代码检查常见问题](https://support.huaweicloud.com/codecheck_faq/codecheck_02_0002.html)排查处理。
   
   
5. 单击"代码问题"页签查看问题列表。 
   由于无致命或严重问题，本文中暂不修改代码。
   
   
 
 #### 步骤五：构建并归档软件包
1. 单击导航栏"持续交付 \> 编译构建"，进入编译构建服务。 
   页面中显示自动创建的任务"Web-Demo-build"。
   
   
2. 单击任务所在行的![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001494026818.png)启动任务。如果出现弹窗，请确认参数设置准确后，单击"确定"。
   
   当页面中显示![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001166942986.png)时，表示任务执行成功。
   如果构建失败，请根据失败步骤信息与日志中的报错信息，参考[编译构建常见问题](https://support.huaweicloud.com/codeci_faq/codeci_02_0001.html)排查处理。
   
   
3. 单击任务名称，查看任务详情。在"构建历史"页面找到最新一次构建的构建编号，记录该编号。
   
   图2构建编号   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002533910139.png)
   
   
4. 单击导航栏"制品仓库 \> 软件发布库"，进入软件发布库。 
   在"仓库视图"中找到与项目名称同名的仓库，依次进入文件夹"Web-Demo-build \> *[3]* *中记录构建编号*"，即可找到生成的软件包"demoapp.jar"。
   图3查看软件包   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002535349063.png "点击放大")
   
   
 
 #### 步骤六：部署构建包
1. 配置目标主机。
   
   1. 单击导航栏"设置 \> 通用设置 \> 基础资源管理"，进入基础资源管理页面。
   
   2. 单击"新建主机集群"，配置以下基本信息，单击"保存"。
      表1新建主机集群 
      | 配置项    | 示例         | 说明                                                                                            |
      |:---|:---|:---|
      | 集群名称   | host-group | 自定义主机集群名称，仅支持3-128位数字、中文、英文字母、"-"、"_"、"."。                                                    |
      | 操作系统   | Linux      | 选择加入集群的主机的操作系统类型，可以选择"Linux"或"Windows"。                                                       |
      | 主机连通方式 | 直连模式       | 选择部署服务与目标主机的连通方式，可以选择"直连模式"或"代理模式"。                                                           |
      | 执行主机   | 默认资源池      | 资源池是部署软件包时执行部署命令的物理环境的集合。 可以选择服务提供的"默认资源池"，也可以将自有的服务器作为资源池。 |
         
      
   
   3. 待页面提示新建主机集群成功，在"目标主机"页签中单击"添加或导入主机"，选择添加方式"导入已购ECS"，在列表中找到[准备工作]中购买的ECS，单击"导入"。
      图4导入ECS   
      ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002533990435.png "点击放大") 
   
   4. 配置以下信息，单击"确定"。
      表2添加主机 
      | 配置项   | 示例                                                              | 说明                          |
      |:---|:---|:---|
      | 用户名   | root                                                            | ECS的登录用户名，Linux主机通常为"root"。 |
      | 密码    | 输入在[准备工作]中购买ECS时设置的密码。 | ECS的登录密码。                   |
      | ssh端口 | 22                                                              | 通常为"22"，也可以自定义端口。           |
         
      
   
   5. 页面显示一条主机记录，当"连通性验证"列的值显示为"成功"时，表示主机添加完成。 如果主机添加失败，请根据失败详情，参考[主机管理常见问题](https://support.huaweicloud.com/deployman_faq/deployman_faq_0000.html)排查处理。
      
   
   
   
   
2. 单击导航栏"持续交付 \> 部署"，进入部署服务。 
   页面中显示自动创建的应用"Web-Demo-deploy"。
   
   
3. 单击![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001477191292.png)，选择"编辑"，进入编辑页面。
4. 选择"环境管理"页签，配置主机环境。
   
   1. 单击"新建环境"，配置以下基本信息，单击"保存"。
      表3新建环境 
      | 配置项  | 示例       | 说明                                          |
      |:---|:---|:---|
      | 环境名称 | demo-env | 自定义环境名称，仅支持3-128位数字、中文、英文字母、"-"、"_"、"."。    |
      | 资源类型 | 主机       | 环境中的资源类型，默认为"主机"。                           |
      | 操作系统 | Linux    | 选择即将添加到环境中的主机的操作系统类型，可以选择"Linux"或"Windows"。 |
         
      
   
   2. 待页面提示创建成功，在"资源列表"页签中单击"导入主机"，在弹框中选择[1]中配置的主机集群和主机，单击"导入"。
   
   3. 待页面提示导入成功，关闭此窗口。
   
   
   
   
5. 选择"部署步骤"页签，配置部署步骤。 
   - 安装JDK：确认JDK版本为"openjdk-1.8.0"。
   
   - 选择部署来源：参考下表进行配置，其他配置保持默认。
     表4部署来源配置 
     | 配置项        | 示例                          | 说明                        |
     |:---|:---|:---|
     | 选择源类型      | 构建任务                        | 软件包的来源，可以选择"制品仓库"或"构建任务"。 |
     | 请选择构建任务    | Web-Demo-build              | 当"选择源类型"为"构建任务"时，显示此配置项。  |
     | 下载到主机的部署目录 | /usr/local/${package_name}/ | 软件包在目标主机中的保存路径。           |
        
     
   
   - 停止SpringBoot服务：首次执行部署时，由于目标主机上还未启动过SpringBoot服务，执行该步骤会失败，因此建议禁用此步骤，单击步骤卡片上的![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001909736008.png)，选择"禁用"。
     图5禁用"停止SpringBoot服务"   
     ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002510515352.png "点击放大") 
   
   - 启动SpringBoot服务：保持默认配置即可。
   
   - URL健康测试：此步骤为可选步骤，本文中选择禁用此步骤。
   
   
   
   
6. 选择"参数设置"页签，参考下表配置参数。 
   表5配置参数 
   | 名称           | 默认值                                                                                             |
   |:---|:---|
   | host_group   | 选择[4]中添加的环境名称"demo-env"。                                    |
   | package_url  | 无需此参数，单击对应行![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001909896028.png)删除。 |
   | service_port | 输入"8080"。                                                                                       |
   | package_name | 输入"demoapp"。                                                                                    |
      
   
   
7. 单击"保存并部署"。如果出现弹窗，请确认参数设置准确后，单击"确定"。 
   待页面显示![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001485284372.png)。如果部署失败，请根据失败步骤信息与日志中的报错信息，参考[部署常见问题](https://support.huaweicloud.com/deployman_faq/deployman_faq_00002.html)排查处理。
   
   
8. 查看部署结果。 
   打开一个新的浏览器页面，输入访问地址"http://IP:8080/test"，其中"IP"为[准备工作]中购买的ECS的弹性公网IP。
   如果出现以下访问结果，表示部署成功。
   图6部署结果   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001477351112.png)
   
   
 
 #### 步骤七：配置流水线
1. 单击导航栏"持续交付 \> 流水线"，进入流水线服务。 
   在"流水线"页签中显示自动创建的流水线"Web-Demo-pipeline"。
   
   
2. 单击![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001507996000.png)，选择"编辑"。
3. 选择"任务编排"页签，配置流水线。 
   1. 本文暂不涉及接口测试，因此需要将接口测试任务从流水线中移除。 单击任务"测试"对应![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001505663349.png)，在弹框中单击"确定"。
      图7删除任务   
      ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002533991169.png) 
   
   2. 单击任务"部署"，关联构建任务选择"构建"，其他配置项的值与[步骤六：部署构建包]中的参数设置保持一致。
   
   
   
   
4. 选择"触发设置"页签，勾选"代码提交时触发"，在分支过滤下拉列表中勾选分支"master"。 
   图8配置触发设置   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002510267746.png)
   
   
5. 单击"保存"，退出编辑。 
   保存成功，页面显示更新后的触发设置。
   
   
6. 进入部署服务，编辑部署步骤，启用步骤"停止SpringBoot服务"。
7. 进入代码仓库，搜索并打开文件"TestController.java"。 
   单击![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001212200723.png)，将"hello world"修改为"hello world again"，输入提交信息后单击"确定"。
   图9修改代码   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001362390781.png "点击放大")
   
   
8. 返回流水线页面，可看到流水线正在运行中。 
   当页面显示![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001455867782.png)时，重新访问页面"http://IP:8080/test"，访问结果将变为下图显示内容。
   如果流水线执行失败，可单击失败原因提示，打开日志，参考[流水线常见问题](https://support.huaweicloud.com/pipeline_faq/pipeline_faq_0023.html)排查处理。
   图10流水线执行结果   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001166482094.png)
   
   
 
 #### 释放资源
![](https://support.huaweicloud.com/qs-devcloud/public_sys-resources/warning_3.0-zh-cn.png)
资源释放后无法恢复，请谨慎操作。
本文中涉及的按需计费资源为ECS。
如果完成体验后不再使用ECS，建议参考[删除弹性云服务器](https://support.huaweicloud.com/ecs_faq/ecs_faq_0412.html#section0)释放该资源。
#### 相关文档
本文采用的代码检查、构建、部署、流水线等任务均为代码仓库模板关联的内置任务。在实际开发项目时可参考以下指导自主创建任务。
表6创建任务参考 
| 服务   | 操作方法                                                                                       |
|:---|:---|
| 代码检查 | 参考[新建代码检查任务](https://support.huaweicloud.com/usermanual-codecheck/codecheck_ug_0000.html)。 |
| 编译构建 | 参考[新建构建任务](https://support.huaweicloud.com/usermanual-codeci/codeci_01_0001.html)。         |
| 部署   | 参考[新建应用](https://support.huaweicloud.com/usermanual-deployman/deployman_hlp_00004.html)。   |
| 流水线  | 参考[新建流水线](https://support.huaweicloud.com/usermanual-pipeline/pipeline_01_0015.html)。      |
   
