
# 配置构建环境
配置构建任务全局运行环境。分为X86服务器与ARM（鲲鹏）服务器，在不同芯片架构上运行的软件，需要选择对应的环境主机。如软件最终在鲲鹏服务器上运行，则选择鲲鹏服务器。
编译构建服务支持使用自定义执行机，支持的自定义执行机类型有LINUX、LINUX_DOCKER、WINDOWS和MAC，各个类型支持的构建场景可参考[表1]，用户可根据实际需求选择使用的执行机类型。
 表1各个类型执行机的使用说明 
| **执行机类型**    | **使用说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|
| LINUX        | - 执行构建任务时，可通过执行shell命令，在Linux虚拟机上执行构建任务，拥有更高的自由度。  - 在使用编译构建服务前用户需要在自定义执行机上自行安装构建工具，例如Maven、Gradle等。  - 构建步骤仅支持[执行shell命令](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0033.html)、[上传软件包到软件发布库](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0038.html)和[下载发布仓库包](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0053.html)。                                                                                                                                                                                                                                                                                                                                |
| LINUX_DOCKER | - 执行构建任务时，编译构建服务将拉起一个Linux Docker容器，构建任务在容器中执行。  - 整个构建过程在容器中运行，运行后容器会自动清理构建镜像，包括构建过程中拉取的代码、过程数据、构建产物等。  - 支持用户宿主机目录与容器目录映射，即可在镜像内共享宿主机目录。  - 构建步骤不支持[下载文件管理的文件](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_00051.html#codeci_ug_00051__section1288894116243)、[Android构建](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_1009.html)和[Maven构建](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_00051.html)的"单元测试"。                                                                                                                                                                             |
| WINDOWS      | - 执行构建任务时，构建任务在Windows执行机上执行，支持用户执行Windows相关的构建任务。  - 通过Git Bash工具执行Shell脚本实现构建。  - 构建步骤仅支持[执行shell命令](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0033.html)、[上传软件包到软件发布库](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0038.html)和[下载发布仓库包](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0053.html)。  - 支持Windows7、Windows10、Windows Server2012和Windows Server2016。  - 自定义Windows执行机前，需已安装JDK和Git。  - 编译工具需自行安装。例如：使用Maven构建，则需要安装Maven工具。   |
| MAC          | - 执行构建任务时，构建任务在MAC执行机上执行Shell命令，支持用户执行MAC相关的构建任务。  - 构建步骤仅支持[执行shell命令](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0033.html)、[上传软件包到软件发布库](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0038.html)和[下载发布仓库包](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0053.html)。  - 支持当前在使用的所有MAC版本。                                                                                                                                                                                                                                                                                                                                                                        |
   
#### 约束与限制
代码化构建时，可使用的环境为自定义执行机、构建并发包和构建加速包L3。
#### 配置构建环境
支持图形化构建和代码化构建两种方式。
- [图形化构建]
  1. 通过项目入口方式[访问CodeArts Build服务首页](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_2000.html#codeci_ug_2000__section743813333914)。
  
  2. 在编译构建服务首页搜索目标任务，单击构建任务名称，进入构建任务配置页面。 CodeArts Build预置了"构建环境配置"步骤，参考[表2]配置参数。
      表2构建环境配置参数说明 
     | **参数**                                                       | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
     |:---|:---|
     | 构建环境主机类型                                                     | X86服务器、ARM（鲲鹏）服务器。 注意： 在不同芯片架构上运行的软件，需要选择对应的环境主机。如软件最终在鲲鹏服务器上运行，则选择鲲鹏服务器。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
     | 执行主机                                                         | 选择用来执行编译构建任务的计算资源。在编译构建服务中，该计算资源为虚拟机。执行主机包括内置执行机和自定义执行机。 - 默认资源池：编译构建服务自身提供的执行主机，用户无需配置即可开箱即用。执行机默认规格为2U8G。  - 自定义资源池：用户自行提供[表1]的计算资源，通过注册的方式托管到编译构建服务中，通过编译构建服务进行调度并执行构建任务。   可根据实际情况选择资源池，自定义资源池为在资源池中添加的代理执行机，具体自定义操作可参考[资源池管理](https://support.huaweicloud.com/usermanual-devcloud/devcloud_01_0015.html)。                                                                       |
     | 选择配置                                                         | 选择执行机规格。（执行主机选择**默认资源池**时需要配置）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
     | 选择代理资源池                                                      | 选择代理资源池。（执行主机选择**自定义资源池**时需要配置）                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
     | 宿主机目录与容器目录映射                                                 | 配置自定义执行机的目录和容器的目录映射，配置映射后，可将自定义执行机中的依赖项等文件挂载到容器中执行构建。（执行主机选择**自定义资源池**时需要配置） 例如：宿主机目录填写"/home"，容器目录填写"/opt"，就会把执行机本地"/home"目录下的内容，挂载到容器内的"/opt"目录下。 注意： 其中容器目录，不支持"./"。                                                                                                                                                                                                                                                                                                                                                             |
     | 使用固定路径 （执行主机选择自定义执行机时需要配置）    | 在编译构建服务中，默认每一次构建都会使用一个空白的且随机的目录(比如/devcloud/ws/sMMM/workspace/j_X/)作为此次构建的根目录，这个根目录所代表的空间称为BuildSpace。 BuildSpace的路径默认是随机的，即使是同一个项目的不同构建任务的BuildSpace也会被随机分配。 但是在某些场景下固定一个BuildSpace的路径是有必要的，因此编译构建服务支持配置BuildSpace，以固定构建执行目录。 可选参数。将开关设置为开启状态，表示使用固定路径，否则不使用固定路径。                                                                                                                                                                                                                                                                                                    |
     | 固定路径后缀 （执行主机选择自定义执行机时需要配置）   | 可选参数。 当使用固定路径时，路径为：/devcloud/slavespace/usr1/+"${domainId}"+/。配置path参数，表示在前面的固定路径基础上拼接路径。 例如："path"配置路径为"kk"，那么固定路径为：/devcloud/slavespace/usr1/+"${domainId}"+/kk。 注意： "使用固定路径"开关设置为开启状态时需要配置。                                                                                                                                                                                                                                                                                                          |
     | 执行后清理固定路径 （执行主机选择自定义执行机时需要配置） | - 开启：需要清理固定路径。即路径是固定的，但是每次执行完会清理路径下的文件。  - 关闭：不清理固定路径。但是工作空间有限的，当文件容量达到工作空间上限后，需要手动清理工作空间（开关设置为开启状态即可）。 注意： - 工作空间指的是用户自定义的执行机的规格。  - 如果未配置清理固定路径，当文件容量达到工作空间上限后，会自动清理当前租户下的固定路径中所有文件。  - "使用固定路径"开关设置为开启状态时需要配置。      |
     | 清理路径白名单 （执行主机选择自定义执行机时需要配置）   | 可选参数。单击"添加路径"，可添加清理路径白名单。即表示使用路径清理，但是排除白名单路径。仅支持指定固定路径下的一级文件夹。 注意： "使用固定路径"开关设置为开启状态时需要配置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
        
     
   
- [代码化构建]
  
  参考以下构建环境配置代码示例，修改在[创建代码化构建使用的YAML文件](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0058.html#codeci_ug_0058__section72391847131511)中的env部分代码信息。
  ```
  version: 2.0 # 必须是2.0，该版本号必填且唯一
  env: # 定义构建环境信息。非必填，如果不填写，默认使用X86
    resource:
      type: docker # 资源池类型：docker或custom，其中docker表示使用默认执行机，custom表示使用自定义执行机
      arch: X86 # 构建环境主机类型：X86或ARM
      class: 8U16G # 规格：2U8G、4U8G、8U16G、16U32G或16U64G，当type为custom时无需填写该参数
      pool: Mydocker #资源池名称，当type为custom时需要填写该参数
  ```
  参考以下BuildSpace代码示例，在[创建代码化构建使用的YAML文件](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0058.html#codeci_ug_0058__section72391847131511)中添加以下代码信息。
  ![](https://support.huaweicloud.com/usermanual-codeci/public_sys-resources/caution_3.0-zh-cn.png)
  可使用的环境为自定义执行机、构建并发包和构建加速包L3。
  ```
  version: 2.0
  buildspace: #表示使用BuildSpace
    fixed: true
    path: kk  
    clean: true
    clean_exclude:
      - cache #排除的具体路径
      - aa #排除的具体路径
      - bb #排除的具体路径
  ```
  表3BuildSpace代码示例参数说明 
  | **参数**        | **类型** | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
  |:---|:---|:---|
  | fixed         | string | 可选参数。当用户需要使用固定构建执行目录时，需要配置该参数。 在编译构建服务中，默认每一次构建都会使用一个空白的且随机的目录(比如/devcloud/ws/sMMM/workspace/j_X/)作为此次构建的根目录，这个根目录所代表的空间称为BuildSpace。 BuildSpace的路径默认是随机的，即使是同一个项目的不同构建任务的BuildSpace也会被随机分配。 但是在某些场景下固定一个BuildSpace的路径是有必要的，因此编译构建服务支持配置BuildSpace，以固定构建执行目录。 - true：使用固定路径。  - false：不使用固定路径。   默认值：false。                                                                                                                                                                                           |
  | path          | string | 可选参数。当使用固定构建执行目录时，需要配置该参数。 当使用固定路径时，路径为：/devcloud/slavespace/usr1/+"${domainId}"+/。配置path参数，表示在前面的固定路径基础上拼接路径。 例如："path"配置路径为"kk"，那么固定路径为：/devcloud/slavespace/usr1/+"${domainId}"+/kk。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
  | clean         | string | 可选参数。当需要清理固定路径时，需要配置该参数。 - true：需要清理固定路径。即路径是固定的，但是每次执行完会清理路径下的文件。  - false：不清理固定路径。但是工作空间可存储的容量是有限的，当文件容量达到工作空间上限后，需要手动清理工作空间(clean配置为true即可)。 注意： - 如果未配置清理固定路径，当文件容量达到工作空间上限后，会自动清理当前租户下的固定路径中所有文件。  - 工作空间指的是用户自定义的执行机的规格。      默认值：true。 |
  | clean_exclude | string | 可选参数。当需要清理固定路径，但又要排除一些路径时，需要配置该参数。 配置后表示使用路径清理，但是排除配置的路径。仅支持指定固定路径下的一级文件夹。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
     
