
# 使用自定义执行机执行Maven构建（自定义执行机/图形化构建）
#### 应用场景
当编译构建服务提供的内置执行机构建环境不满足业务要求时，您可接入自行提供的计算资源，通过注册的方式托管到编译构建服务中，委托编译构建服务进行调度并执行构建任务。本实践我们通过"Maven构建"和"上传软件包到软件发布库"两个构建步骤来演示使用自定义执行机的构建场景。
本实践需要依赖使用的其他服务如下：
- [代码托管服务](https://support.huaweicloud.com/codeartsrepo/index.html)，用于存储实践中项目所使用的代码。
- [制品仓库服务](https://support.huaweicloud.com/cloudartifact/index.html)，用于存储实践中使用的私有依赖包。
 
#### 约束限制
- 需已具备CodeArts Artifact服务的操作权限，具体操作可参考[授权使用CodeArts Artifact服务](https://support.huaweicloud.com/usermanual-cloudartifact/cloudartifact_bill_9000.html)。
- 需已具备CodeArts Repo服务的操作权限，具体操作可参考[授权使用CodeArts Repo服务](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0132.html)。
 
#### 资源和成本规划
本实践需购买ECS作为自定义执行机，关于ECS的购买费用可参考[价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/ecs)。
 #### 前提准备
已参考[自定义购买ECS](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)购买自定义执行机使用的弹性云服务器。
#### 操作流程
表1操作流程 
| **流程**                                                                                        | **说明**                                      |
|:---|:---|
| [新建项目]                                            | 为本实践新建项目。                                   |
| [新建自定义执行机资源池]       | 为本实践新建所需的自定义执行机资源池。                         |
| [新建CodeArts Repo代码仓] | 为本实践新建存储代码的代码仓。                             |
| [新建并执行编译构建任务]         | 为本实践新建构建任务，包括"Maven构建"和"上传软件包到软件发布库"构建步骤。   |
| [查看构建任务和构建结果]        | 为您介绍通过查看构建日志确认该实践的构建任务使用的执行机和在制品仓中查看上传的软件包。 |
   
 #### 新建项目
1. 使用华为云账号[登录华为云控制台页面](https://console.huaweicloud.com/console)。
2. 单击页面左上角![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251774.png)，在服务列表中选择"开发与运维 \> 华为云码道 CodeArts"。
3. 单击"立即使用"，进入CodeArts服务首页。
4. 在首页单击"新建项目"，选用"Scrum"项目模板。
5. 项目名称填写"build-bestpractice"，其他保持默认即可。
6. 单击"确定"后，进入到"build-bestpractice"项目下。
 
 #### 新建自定义执行机资源池
1. 在导航栏中单击用户名![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087370629.png)，选择"租户设置"。
2. 选择"资源池管理 \> 资源池"。
3. 单击"新建资源池"，在弹出的窗口中参考[表2]配置参数后，单击"保存"。
   
    表2资源池配置参数说明 
   | **参数名称**         | **参数说明**                                          |
   |:---|:---|
   | 资源池名称            | 资源池的名称，根据需要自定义。例如：custom_pool。                    |
   | 资源池类型            | 选择LINUX_DOCKER。执行任务时将拉起一个Linux docker容器，任务在容器中运行。 |
   | 资源池描述            | 根据需要输入资源池描述。可不填写。                                 |
   | 资源池可以被租户下所有子用户使用 | 勾选后，此资源池可以被当前租户下所有子用户使用。可不勾选。                     |
      
   
   
4. 单击新建的资源池名称"custom_pool"，进入到资源池配置页面。
5. 单击"新建代理"，在弹出的窗口中，参考[表3]配置代理信息，其他参数项保持默认即可。
   
    表3新建代理参数说明 
   | **参数**     | **说明**                                                                                  |
   |:---|:---|
   | 自动安装Docker | 打开开关，自动安装Docker。                                                                        |
   | AK         | 参考[获取AK/SK](https://support.huaweicloud.com/devg-apisign/api-sign-provide-aksk.html)获取。 |
   | SK         | 参考[获取AK/SK](https://support.huaweicloud.com/devg-apisign/api-sign-provide-aksk.html)获取。 |
   | 代理名称       | 自定义代理名称。保持默认即可。                                                                         |
   | 代理工作空间     | 填写代理工作空间，需符合标准的linux目录格式。保持默认即可。                                                        |
      
   
   
6. 勾选协议，依次单击"生成命令"和"复制命令"。单击"关闭"。
   
   图1新建代理   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051093234.png)
   
   
7. 根据"步骤三"提示，在弹性云服务器列表页，单击[前提准备]中购买的服务器所在行的"远程登录"按钮，执行[6]中复制的命令。
8. 在代理列表页面，单击"刷新列表"，后台自动同步信息后，代理列表中会增加一条代理执行机信息。代理执行机的代理别名为"agent_test_custom-mwlye1NlLG"。 
   图2代理执行机   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251546.png)
   
   
 
 #### 新建CodeArts Repo代码仓
1. 在导航栏中选择"服务 \> 代码托管"，进入代码托管服务首页。
2. 单击"新建仓库"，在新建仓库页面"归属项目"选择[新建项目]中创建的项目名称，"仓库类型"选择"模板仓库"，单击"下一步"。
3. 选择"Java Maven Demo"仓库模板，单击"下一步"。
4. "代码仓库名称"填写为"custom_repo"，其他参数保持默认即可。单击"确定"，完成代码仓的创建。 
   创建完成后的代码仓文件目录如[图3]所示。
   图3代码仓文件目录   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087252065.png)
   
   
 
 #### 新建并执行编译构建任务
1. 在页面导航栏中选择"持续交付 \> 编译构建"。
2. 单击"新建任务"，根据[表4]填写参数信息，单击"下一步"。
   
    表4基本信息配置 
   | **参数** | **说明**                                                                                                                  |
   |:---|:---|
   | 任务名称   | 自定义任务名称，例如：custom_task。                                                                                                 |
   | 代码源    | 选择"Repo"。拉取CodeArts Repo代码仓中的代码进行编译构建。                                                                                  |
   | 代码仓    | 选择[新建CodeArts Repo代码仓]中新建的代码仓库名称"custom_repo"。 |
   | 默认分支   | 选择默认"master"即可。                                                                                                         |
   | 任务描述   | 对该构建任务的描述。                                                                                                              |
      
   
   
3. 选择"Maven"模板，单击"确定"，进入构建步骤配置页面。
4. 参考[表5]配置"构建环境配置"步骤，其他参数保持默认即可，单击"保存并执行"。
   
    表5构建环境配置参数说明 
   | **参数**  | **说明**                                                                                                              |
   |:---|:---|
   | 执行主机    | 选择自定义执行。                                                                                                            |
   | 选择代理资源池 | 在下拉框中选择[新建自定义执行机资源池]中新建的资源池"custom_pool"。 |
      
   图4构建环境配置   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087370637.png)
   
   
5. 在弹出的窗口中单击"确定"，跳转到构建任务运行页面。
 
 #### 查看构建任务和构建结果
1. 在构建日志中，控制台会滚动打印构建任务执行日志信息。如[图5]所示，使用的执行机为[新建自定义执行机资源池]中新建的代理资源池"custom_pool"下的执行机"agent_test_custom-mwlye1NlLG"，表示当前构建任务是在该代理执行机中运行的。
   
   图5构建日志   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051093238.png)
   
   
2. 待构建任务执行完成后，每个构建步骤标记![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251550.png)表示构建任务执行成功。
   
   图6构建任务执行成功   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087252069.png)
   
   
3. 单击步骤日志的"上传软件包至软件发布库"，在日志中查看上传到软件发布库的路径为"/custom_task/20240620.19/"，如[图7]所示。
   
   图7查看上传的软件包路径   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087370645.png)
   
   
4. 在导航栏选择"制品仓库 \> 软件发布库"，文件路径为"/custom_task/20240620.19/javaMavenDemo-1.0.jar"。 
   图8软件包信息   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051093242.png)
   
   
 
#### 相关操作
关于Maven构建相关常见问题，可参考[Maven构建常见问题](https://support.huaweicloud.com/codeci_faq/codeci_02_0002.html)。
