
# 使用自定义执行机执行代码检查任务
#### 应用场景
当CodeArts Check提供的内置执行机不满足业务要求时，您可接入自行提供的执行机，通过注册的方式托管到CodeArts Check服务中，委托CodeArts Check服务进行调度并执行代码检查任务。本实践通过检查CodeArts Repo代码仓的代码问题来演示使用自定义执行机执行代码检查任务。
本实践需要依赖使用的其他服务：[代码托管服务](https://support.huaweicloud.com/codeartsrepo/index.html)，用于存储实践中项目所使用的代码。
#### 约束限制
- 使用自定义执行机功能为受限功能，如需使用，请[提交工单](https://support.huaweicloud.com/usermanual-ticket/zh-cn_topic_0127038618.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)购买本实践使用的弹性云服务器。执行机规格为CentOS 7及以上，推荐配置如下：
  - CPU：8U，内存：32G，系统盘：100G，数据盘：250G。（使用该执行机规格时，**需要** 执行[挂载云硬盘](https://support.huaweicloud.com/usermanual-evs/evs_01_0107.html)操作。）
  
  - CPU：8U，内存：32G，系统盘：250G。（使用该执行机规格时，**无需** 执行[挂载云硬盘](https://support.huaweicloud.com/usermanual-evs/evs_01_0107.html)操作。）
   
- 接入的自定义执行机中已安装Git-lfs，若未安装，可参考以下示例安装Git-lfs。本示例以使用命令的方式安装为例。
  在执行机上执行以下命令。
  ```
  # 下载
  wget -O  git-lfs.tar.gz https://github.com/git-lfs/git-lfs/releases/download/v3.4.1/git-lfs-linux-amd64-v3.4.1.tar.gz
  # 解压
  tar -zxvf git-lfs.tar.gz
  # 进入解压后的目录
  cd  git-lfs-3.4.1
  # 执行安装脚本
  sh install.sh
  # 验证
  git lfs version
  ```
  
 
#### 操作流程
表1操作流程 
| **流程**                                                                                        | **说明**                         |
|:---|:---|
| [新建项目]              | 为本实践新建项目。                      |
| [新建自定义执行机资源池]      | 为本实践新建所需的自定义执行机资源池。            |
| [新建CodeArts Repo代码仓] | 为本实践新建存储代码的代码仓。                |
| [配置并执行代码检查任务]     | 配置代码检查任务使用自定义执行机执行检查。          |
| [查看代码检查结果]          | 通过查看检查日志可验证本次代码检查任务使用自定义执行机执行。 |
   
 #### 新建项目
1. 使用华为云账号[登录华为云控制台页面](https://console.huaweicloud.com/console)。
2. 单击页面左上角![](https://support.huaweicloud.com/bestpractice-codecheck/zh-cn_image_0000002329099781.png)，在服务列表中选择"开发与运维 \> 代码检查 CodeArts Check"。
3. 单击"前往代码检查"，进入CodeArts Check服务首页。
4. 在导航栏切换到"首页"页签，依次单击"新建 \> 新建项目"，选用"Scrum"项目模板。
5. 填写项目名称，例如"check-bestpractice"，其他参数保持默认即可。
6. 单击"确定"后，进入到"check-bestpractice"项目下。
 
 #### 新建自定义执行机资源池
1. 在导航栏中单击用户名![](https://support.huaweicloud.com/bestpractice-codecheck/zh-cn_image_0000002051102256.png)，选择"租户设置"。
2. 选择"资源池管理 \> 资源池"。
3. 单击"新建资源池"，在弹出的窗口中参考[表2]配置参数后，单击"保存"。
   
    表2资源池配置参数说明 
   | **参数名称**         | **参数说明**                                          |
   |:---|:---|
   | 资源池名称            | 资源池的名称，根据需要自定义。例如：custom_pool。                    |
   | 资源池类型            | 选择LINUX_DOCKER。执行任务时将拉起一个Linux docker容器，任务在容器中运行。 |
   | 资源池描述            | 根据需要输入资源池描述。可不填写。                                 |
   | 资源池可以被租户下所有子用户使用 | 勾选后，此资源池可以被当前租户下所有子用户使用。可不勾选。                     |
      
   
   
4. 单击新建的资源池名称"custom_pool"，进入到资源池配置页面。
5. 单击"新建代理"，在弹出的窗口中，参考[表3]配置代理信息，其他参数项保持默认即可。
   
    表3新建代理参数说明 
   | **参数**     | **说明**                                                                                  |
   |:---|:---|
   | 是否安装Docker | 勾选此项，需要安装Docker。                                                                        |
   | 自动安装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)获取。 |
   | 代理名称       | 自定义代理名称。例如：agent_test_custom。                                                           |
   | 代理工作空间     | 填写代理工作空间，需符合标准的linux目录格式。例如：/opt/agent_test_custom。                                     |
      
   
   
6. 勾选协议，依次单击"生成命令"和"复制命令"。单击"关闭"。
   
   图1新建代理   
   ![](https://support.huaweicloud.com/bestpractice-codecheck/zh-cn_image_0000002087379645.png "点击放大")
   
   
7. 根据"步骤三"提示，在弹性云服务器列表页，单击[前提准备]中购买的服务器所在行的"远程登录"按钮，执行[6]中复制的命令。
8. 在代理列表页面，单击"刷新列表"，后台自动同步信息后，代理列表中会增加一条代理执行机信息。代理执行机的代理别名为"agent_test_custom-mwlye1NlLG"。
   
   图2代理执行机   
   ![](https://support.huaweicloud.com/bestpractice-codecheck/zh-cn_image_0000002051260548.png "点击放大")
   
   
 
 #### 新建CodeArts Repo代码仓
1. 在导航栏中选择"代码 \> 代码托管"，进入"check-bestpractice"项目下的代码托管服务页面。
2. 单击"新建仓库"，选择CR仓库模式。
3. 在新建仓库页面选择"按模板新建"，单击"下一步"。
4. 选择"Java Maven Demo"仓库模板，单击"下一步"。
5. "代码仓库名称"填写为"custom_repo"，勾选自动创建代码检查任务前的复选框，其他参数保持默认即可。单击"确定"，完成代码仓的创建。 
   创建完成后的代码仓文件目录如[图3]所示。
   图3代码仓文件目录   
   ![](https://support.huaweicloud.com/bestpractice-codecheck/zh-cn_image_0000002087261085.png)
   
   
 
 #### 配置并执行代码检查任务
1. 在页面导航栏中选择"代码 \> 代码检查"。由于在创建代码仓时，已选择自动创建代码检查任务，因此在代码检查任务列表页，已展示对应的代码检查任务。
2. 单击任务名称，进入代码检查详情页面，选择"设置 \> 自定义环境"。
3. 在"执行主机"区域，选择"自定义资源池"。
4. 在下拉框中选择[新建自定义执行机资源池]中创建的资源池"custom_pool"。
5. 配置完成后，单击"保存"，单击"执行检查"。
 
 #### 查看代码检查结果
单击任务名称，进入代码检查详情页面，单击"检查日志"页签。若日志信息中出现"Find available executor node:agent_test_custom-mwlye1NlLG"，表示本次代码检查任务由自定义执行机执行。其中"agent_test_custom-mwlye1NlLG"为[8]中代理执行机的代理别名。
![](https://support.huaweicloud.com/bestpractice-codecheck/zh-cn_image_0000002051102260.png "点击放大")
#### 相关文档
- 如果需要对代码检查任务进行更多配置，可参考[配置代码检查任务](https://support.huaweicloud.com/usermanual-codecheck/codecheck_01_0001.html)。
- 执行代码检查任务时常见问题请参考[代码检查常见问题](https://support.huaweicloud.com/codecheck_faq/codecheck_02_0002.html)。
 
