
# 对C/C++构建工程进行构建加速（内置执行机/图形化构建）
#### 应用场景
针对C/C++语言构建工程，需要提升构建效率的问题，编译构建服务支持构建加速能力，通过分布式编译和增量编译等技术实现构建加速,支撑企业研发过程的快速迭代，缩短产品的上市周期。
本实践通过L3级别的加速包为您演示如何进行构建加速。
本实践需要依赖使用的其他服务如下：
- [代码托管服务](https://support.huaweicloud.com/codeartsrepo/index.html)，用于存储实践中项目所使用的代码。
 
#### 约束限制
- 需已具备CodeArts Repo服务的操作权限，具体操作可参考[授权使用CodeArts Repo服务](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0132.html)。
- 目前该功能仅支持代码源为CodeArts Repo的C/C++语言构建工程的编译构建加速。
- 使用构建加速能力需要额外购买配套构建加速包，构建加速包因加速原理以及效果的不同，共有三种规格以供购买，规格介绍及购买指南请参考[购买构建加速包](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0001.html#section3)。本实践需要购买X86架构和L3级别的加速包。
- 基于自定义执行机的构建任务，无法使用构建加速能力。
- 需在本地已准备好C++工程代码。
 
#### 操作流程
表1操作流程 
| **流程**                                                                                       | **说明**                          |
|:---|:---|
| [新建项目]                                           | 为本实践新建项目。                       |
| [新建CodeArts Repo代码仓] | 为本实践创建构建过程中使用的代码文件。             |
| [新建并执行编译构建任务]        | 新建本实践中需要使用的构建任务并按照本实践场景配置任务并执行。 |
| [查看构建任务和构建结果]       | 查看本实践的构建结果，包括查看构建日志和结果文件。       |
   
 #### 新建项目
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"项目下。
 
 #### 新建CodeArts Repo代码仓
1. 在导航栏中选择"服务 \> 代码托管"，进入代码托管服务首页。
2. 单击"新建仓库"，选择"普通仓库"，单击"下一步"。
3. 在新建仓库页面，"代码仓库名称"填写为"test_build_accelerate"，其他参数保持默认即可，单击"确定"。
4. 在代码仓详情页，依次单击"新建 \> 新建目录"，在弹出的窗口中，"目录名称"填写".cloudbuild"，"提交信息"填写"add .cloudbuild directory"，单击"确定"。 
   图1新建目录   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051093748.png)
   
   
5. 选中左侧".cloudbuild"目录，依次单击"新建 \> 新建文件"，文件名输入"build.yml"，将以下代码片段复制粘贴到文件内容里，单击"确定"。 
   ```
   ---
   version: 2.0
   buildspace:
     fixed: true
   env:  
     resource:
       type:  docker
       arch: X86
       class: 2U8G
   steps:
     BUILD:
     - cmake:
         image: cloudbuild@cmake3.16.5-gcc7.3.0
         inputs:
           command: |
               string=${NB_RDECO_IP};while read -n6 c;do echo "$c!";done <<< "$string"
               tar zxf moosefs-3.0.113.tar.gz
               unset CCACHE_BASEDIR
               export NB_PRINT_SHOW=1
               export NB_PRINT_REMOTE_EXEC_MSG=1
               cd moosefs-3.0.113
               ./configure >> /dev/null
               make clean >> /dev/null ;BuildAccelerateL3 make -j8
   ```
   该"build.yml"文件是代码化构建所需的执行脚本文件。
   图2新建build.yml文件   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087252581.png)
   
   
6. 在代码仓根目录下，依次单击"新建 \> 上传文件"，在弹出的窗口上传任意C++语言工程代码，输入提交信息，单击"上传"。
 
 #### 新建并执行编译构建任务
1. 在页面导航栏中选择"持续交付 \> 编译构建"。
2. 单击"新建任务"，根据[表2]填写参数信息，单击"下一步"。
   
    表2基本信息配置 
   | **参数** | **说明**                                                                                                                           |
   |:---|:---|
   | 任务名称   | 自定义任务名称，例如：test_build_accelerate_task。                                                                                           |
   | 代码源    | 选择"Repo"。拉取CodeArts Repo代码仓中的代码进行编译构建。                                                                                           |
   | 代码仓    | 选择[新建CodeArts Repo代码仓]中新建的代码仓库名称"test_build_accelerate"。 |
   | 默认分支   | 保持默认"master"即可。                                                                                                                  |
   | 任务描述   | 对该构建任务的描述。                                                                                                                       |
      
   
   
3. 选择"空白构建模板"，单击"确定"，自动跳转到构建步骤配置页面。
4. 在"构建步骤"页签，单击"代码化"页签，会自动加载"test_build_accelerate"代码仓中的构建运行脚本。 
   图3代码化构建   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087371181.png)
   
   
5. 单击"保存并执行"，在弹出的窗口中单击"确定"即可跳转到构建任务运行页面。
 
 #### 查看构建任务和构建结果
单击左侧"CMake构建"，在构建日志控制台打印CMake工程的编译日志。如[图4]所示，"BuildAccelerateL3"命令表示当前的CMake工程使用L3级别的构建加速特性进行编译加速。
图4构建日志   
![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051252070.png)
