
# 使用CodeArts快速搭建基于CCE部署的代码开发流水线
本文基于CodeArts内置代码仓库，介绍如何使用CodeArts完成项目的开发、构建与部署，实现持续交付。
本文采用的部署方式为CCE部署，适用于容器化部署场景。如果您希望使用传统软件包部署方法，请参考[使用CodeArts快速搭建基于ECS部署的代码开发流水线](https://support.huaweicloud.com/qs-devcloud/devcloud_qs_0001.html)。
#### 操作视频
因不同版本操作界面可能存在差异，相关视频供参考，具体以实际环境为准。
<video controls="controls" preload="none" id="object1922104511167" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/codearts_video/1688104612555154546.mp4" title="qs-cce" poster="https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002498693246.jpg" height="300.0000" width="600.0000"></video>
#### 操作流程
| 操作步骤                                                          | 说明                                                                                                                          |
|:---|:---|
| [准备工作]               | 注册华为账号并开通华为云、实名认证，为账户充值，购买CCE，创建SWR组织。                                                                                      |
| [步骤一：开通CodeArts体验版] | CodeArts支持包年/包月计费，使用CodeArts前需要完成购买，开通体验版即可完成本文中的操作流程。                                                                      |
| [步骤二：新建项目]         | 项目是使用CodeArts各服务的基础，创建项目后才能完成后续操作。                                                                                          |
| [步骤三：新建代码仓库]       | 代码仓库用于项目代码的版本管理，本文使用服务内置的模板"Java Web Demo"创建代码仓库。                                                                           |
| [步骤四：准备Dockerfile]    | 创建用于构建镜像的文本文件"Dockerfile"，其中包含了构建镜像所需的指令和说明。了解Dockerfile更详细说明，请参见[Docker官网](https://docs.docker.com/reference/dockerfile/)。 |
| [步骤五：构建并推送镜像]          | 通过编译构建任务将软件的源代码编译成镜像，并把镜像推送归档到SWR中。                                                                                         |
| [步骤六：创建负载]           | 在CCE中创建无状态负载（Deployment），用于加载运行demo镜像。                                                                                      |
| [步骤七：部署镜像]            | 通过在部署服务中创建应用，实现镜像的自动化部署。                                                                                                    |
| [步骤八：配置流水线]          | 通过配置流水线，将代码仓库、构建、部署串联起来，当代码仓库中发生代码提交动作时，可以自动触发流水线的执行，实现持续交付。                                                                |
| [释放资源]                | 按需计费的资源会产生持续计费，为了避免不必要的费用产生，完成体验后，可以释放部分不再使用的资源。                                                                            |
   
 #### 准备工作
- 已[注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)、[实名认证](https://support.huaweicloud.com/usermanual-account/account_auth_00001.html)。

- 已购买满足以下配置的CCE集群。
  表1集群配置要求 
  | 配置分类 | 配置要求                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            | 参考                                                                                    |
  |:---|:---|:---|
  | 集群   | 建议选择按需计费。 - 集群类型：CCE Standard集群。  - 集群版本：建议选择最新版本。  - 控制节点架构：X86。  - 容器网络模型：VPC网络。  - 容器网段：自动设置网段。   | [购买Standard/Turbo集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0028.html) |
  | 节点   | 建议选择按需计费。 - 节点类型：弹性云服务器-虚拟机。  - 节点规格：2vCPUs \| 8GiB或以上规格。  - 容器引擎：Docker。  - 操作系统：公共镜像-CentOS 7.6。                                               | [创建节点](https://support.huaweicloud.com/usermanual-cce/cce_10_0363.html)               |
     
  ![](https://support.huaweicloud.com/qs-devcloud/public_sys-resources/caution_3.0-zh-cn.png)
  购买CCE将产生计费，计费详情请参考[CCE价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/cce)。
  
- 已在容器镜像服务中创建名称为"web-demo"的组织（如果页面提示"组织已存在"，请自定义其他名称），操作方法请参考[创建组织](https://support.huaweicloud.com/usermanual-swr/swr_01_0014.html#section1)。
 
 #### 步骤一：开通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"），单击"确定"。 
   新建代码仓库成功，页面跳转至仓库内，显示仓库的代码文件列表。
   
   
 
 #### 步骤四：准备Dockerfile
1. 在代码仓库中，单击文件列表上方"新建"，在下拉列表中选择"新建文件"。 
   图1新建文件   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002533912853.png)
   
   
2. 输入文件名Dockerfile，文件详情输入以下代码。 
   ```
   FROM swr.cn-north-4.myhuaweicloud.com/codeci/java:openjdk-8-jdk-alpine
   ADD target /demo
   COPY ./target/demoapp.jar /demo
   CMD ["java","-jar","/demo/demoapp.jar"]
   ```
   
   
3. 输入备注信息，单击"提交"。
 
 #### 步骤五：构建并推送镜像
1. 单击导航栏"持续交付 \> 编译构建"，进入编译构建服务。
2. 单击"新建任务"，配置任务信息。 
   1. 基本信息：配置以下信息，单击"下一步"。
      表2构建任务基本信息 
      | 配置项  | 示例              | 说明                                         |
      |:---|:---|:---|
      | 名称   | Web-Demo-docker | 自定义构建任务名称。支持中英文、数字、下划线"_"、"-"，长度不超过115个字符。 |
      | 代码源  | Repo            | 选择构建任务的代码来源，支持Repo、GitHub等多种来源。            |
      | 代码仓  | Web-Demo        | 选择需要编译的代码仓库。                               |
      | 默认分支 | master          | 选择需要编译的代码仓库分支。                             |
         
      
   
   2. 构建模板：选择"空白构建模板"，单击"确定"。
   
   
   
   
3. 配置构建步骤。 
   1. 单击"点击添加构建步骤"，在步骤列表中找到"Maven构建"，单击"添加"。
   
   2. 单击"添加步骤"，在步骤列表中找到"制作镜像并推送到SWR仓库"，单击"添加"。
   
   3. 参照下表配置步骤"制作镜像并推送到SWR仓库"（表中未涉及的字段保持默认配置即可）。
      表3配置镜像信息 
      | 配置项  | 示例                                                          | 说明                                                            |
      |:---|:---|:---|
      | 组织   | 输入在[准备工作]中创建的组织名称。 | 选择镜像推送到SWR后所属的组织。                                             |
      | 镜像标签 | v1.0.0                                                      | 自定义用来标记镜像的版本。支持大小写字母、数字、"."、"_"、"-"，不可以"."或"-"开头，最多可包含128个字符。 |
         
      
   
   
   
   
4. 完成配置，单击"保存并执行"。 
   当页面中显示![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001480544013.png)时，表示任务执行成功。如果构建失败，请根据失败步骤信息与日志中的报错信息，参考[编译构建常见问题](https://support.huaweicloud.com/codeci_faq/codeci_02_0001.html)排查处理。
   
   
5. 登录容器镜像服务控制台，在页面左侧导航栏中选择"我的镜像"。 
   页面中有一条镜像名称为"demo"，所属组织为"web-demo"的记录。
   单击镜像名称查看详情，镜像版本为"v1.0.0"。
   图2查看镜像   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002501993024.png "点击放大")
   
   
 
 #### 步骤六：创建负载
1. 登录云容器引擎控制台，单击在[准备工作]中购买的集群，进入详情页。
2. 在页面左侧导航选择"工作负载"，单击"创建工作负载"。
3. 参考下表完成配置，单击"创建工作负载"。 
   配置项详细说明请参考[创建无状态负载](https://support.huaweicloud.com/usermanual-cce/cce_10_0047.html)。
   表4创建工作负载 
   | 配置分类 | 配置项       | 示例                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|:---|
   | 基本信息 | 负载类型      | 无状态负载                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | 基本信息 | 负载名称      | web-demo                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | 基本信息 | 实例数量      | 1                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 容器配置 | 镜像名称      | 单击"选择镜像"，在弹框中勾选"demo"，单击"确定"。                                                                                                                                                                                                                                                                                                                                                                                                         |
   | 容器配置 | 更新策略      | 勾选"总是拉取镜像"                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 容器配置 | 镜像版本      | v1.0.0                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | 服务配置 | Service名称 | web-demo                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | 服务配置 | 访问类型      | 负载均衡                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 服务配置 | 服务亲和      | 集群级别                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   | 服务配置 | 负载均衡器     | 1. 选择"共享型 \> 自动创建"。  2. 配置以下信息： - 实例名称：web-demo-test。  - 弹性公网IP：自动创建。     |
   | 服务配置 | 端口配置      | - 协议：TCP。  - 容器端口：8080。  - 服务端口：8080。                                                                                                                                             |
   | 高级配置 | 升级策略      | 替换升级                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
   
   
4. 待页面提示创建成功，单击"查看工作负载详情"，返回负载详情页面，"实例列表"页签中显示一条记录。
   
   当该记录的状态为"运行中"时，选择"访问方式"页签，找到![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001982695813.png)时，将鼠标悬浮在访问类型下的负载均衡器名称处，在弹窗中复制公网地址。
   图3复制访问地址   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002501993676.png)
   
   
5. 打开新的浏览器页面，输入"http://IP:8080/test"，其中IP为[4]中复制的公网地址。
   
   如果出现以下访问结果，表示负载运行成功。
   图4部署结果   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001477351112.png)
   
   
 
 #### 步骤七：部署镜像
1. 返回CodeArts页面，单击导航栏"持续交付 \> 部署"，进入部署服务。 
   1. 单击"新建应用"，输入应用名称（应用名称仅支持中英文、数字、"-"、"_"，长度为3-128个字符，本文中使用"web-demo-k8s"），单击"下一步"。
   
   2. 选择"空白模板"，单击"确定"。
   
   
   
   
2. 在步骤列表中搜索并添加步骤"Kubernetes快速部署(CCE集群)"，参考下表完成步骤配置。 
   表5配置部署步骤 
   | 配置项    | 示例                                                                       | 说明            |
   |:---|:---|:---|
   | 区域     | 选择[准备工作]中购买的集群所在的区域。            | 选择目标集群所在的区域。  |
   | 集群名称   | 选择[准备工作]中购买的集群名称。               | 选择目标集群的名称。    |
   | 命名空间名称 | default                                                                  | 选择目标集群中的命名空间。 |
   | 工作负载名称 | web-demo                                                                 | 选择需要部署的工作负载。  |
   | 容器名称   | 选择[步骤六：创建负载]时，在"容器配置"部分显示的容器名称。 | 选择需要部署的容器实例名。 |
      
   
   
3. 单击"保存并部署"。 
   当页面显示![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001635876081.png)时，表示测试通过。如果部署失败，请根据失败步骤信息与日志中的报错信息，参考[部署常见问题](https://support.huaweicloud.com/deployman_faq/deployman_faq_00002.html)排查处理。
   
   
 
 #### 步骤八：配置流水线
1. 单击导航栏"持续交付 \> 流水线"，进入流水线服务。
2. 单击"新建流水线"，配置流水线。 
   1. 基本信息：配置以下信息，单击"下一步"。
      表6流水线基本信息 
      | 配置项  | 示例                    | 说明                                            |
      |:---|:---|:---|
      | 名称   | web-demo-pipeline-k8s | 自定义流水线名称。支持中文、大小写英文字母、数字、"-"、"_"，长度不超过128个字符。 |
      | 流水线源 | Repo                  | 选择流水线的代码来源。支持Repo、通用Git等多种来源。                 |
      | 代码仓  | Web-Demo              | 选择流水线关联的代码仓库名称。                               |
      | 默认分支 | master                | 选择流水线关联的代码仓库分支。                               |
         
      
   
   2. 模板：选择"空模板"，单击"确定"。
   
   
   
   
3. 配置工作流。 
   1. 单击"阶段_1"后的![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002295618310.png)，在"编辑阶段"窗口中输入阶段名称（阶段名称支持中文、大小写英文字母、数字、"-"、"_"、","、";"、":"、"."、"/"、"("、")"、"（"、"）"、空格，其中空格不可在名称开头或结尾使用，长度为1-128个字符。此处使用"构建"），单击"确定"。
      图5编辑阶段名称   
      ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002533913515.png) 
   
   2. 单击"新建任务"。如果有下拉列表，选择"从空任务新建"。
   
   3. 在页面右侧滑出的窗口中找到"Build构建"，单击"添加"。
      图6添加任务   
      ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002533993561.png "点击放大") 
   
   4. 参考下表配置任务信息，单击"确定"。
      表7编辑构建任务 
      | 配置项        | 示例              | 说明                                                                                                   |
      |:---|:---|:---|
      | 名称         | 保持默认值即可。        | 自定义任务名称。支持中文、大小写英文字母、数字、"-"、"_"、","、";"、":"、"."、"/"、"("、")"、"（"、"）"、空格，其中空格不可在名称开头或结尾使用，长度为1-128个字符。 |
      | 请选择需要调用的任务 | Web-Demo-docker | 选择本项目下和当前流水线中配置的代码仓库相同的、或构建来源配置为来自流水线的构建任务。                                                          |
      | 仓库         | Web-Demo        | 选择构建任务关联的代码仓库。                                                                                       |
         
      
   
   5. 单击"新建阶段"，并修改阶段名称为"部署"。添加成功后，页面中显示新增的阶段。
   
   6. 单击"新建任务"，添加插件"Deploy部署"。
   
   7. 选择调用任务"web-demo-k8s"、关联构建任务选择[3.d]设置的任务名称，单击"确定"。
   
   
   
   
4. 选择"触发设置"页签，勾选"代码提交时触发"，在分支过滤下拉列表中勾选分支"master"。 
   图7配置触发设置   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000002510267746.png)
   
   
5. 单击"保存"，退出编辑。 
   保存成功，页面显示更新后的触发设置。
   
   
6. 进入代码仓库，搜索并打开文件"TestController.java"。 
   单击![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001212200723.png)，将"hello world"修改为"hello world again"，输入提交信息后单击"确定"。
   图8修改代码   
   ![](https://support.huaweicloud.com/qs-devcloud/zh-cn_image_0000001362390781.png "点击放大")
   
   
7. 返回流水线页面，可看到流水线正在运行中。 
   当页面显示![](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)排查处理。
   图9流水线执行结果   
   ![](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)
资源释放后无法恢复，请谨慎操作。
本文中涉及的按需计费资源为CCE。
如果完成体验后不再使用CCE，建议参考[删除按需计费的集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0212.html#section3)，释放该资源。
