
# 新建构建任务（图形化构建）
图形化构建是指通过在CodeArts Build页面配置构建工具的相关参数实现编译构建，可以根据实际使用场景自定义组合构建工具。
#### 约束与限制
当构建任务的代码源为用户本地代码仓时，出于安全性考虑，如仅需CodeArts Build可以访问代码仓，可将下列IP加入代码仓服务器的访问白名单中。
- 华北-北京四、华北-北京一、东北-大连：121.36.9.82、119.3.235.73
- 华南-广州、华南-深圳、华东-上海一、华东-上海二、西南-贵阳一：139.159.236.151、124.71.112.32
 
 #### 新建构建任务前准备工作
- 如果使用的是CodeArts Repo代码仓，需已具备代码托管服务（CodeArts Repo）的操作权限，具体操作可参考[管理CodeArts Repo成员权限](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0054.html)。
- 参考华为云码道(CodeArts)的"用户指南 \> 华为云码道（CodeArts）使用前准备 \> 新建CodeArts项目"，[新建CodeArts项目](https://support.huaweicloud.com/usermanual-devcloud/codearts_01_0027.html)。
  如果已有项目，无需执行此步骤。
  
- 参考代码托管服务（CodeArts Repo）的用户指南手册，[新建代码仓库](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0013.html)。
  如果用户使用的是第三方代码仓或已有CodeArts Repo代码仓，无需执行此步骤。
  
 
#### 新建图形化构建任务
1. 通过项目入口方式[访问CodeArts Build服务首页](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_2000.html#codeci_ug_2000__section743813333914)。
2. 单击[分组名称](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0070.html#codeci_ug_0070__section51051226102218)。
3. 单击"新建任务"，进入配置"基本信息"页面，参考[表1]填写构建任务基本信息。然后单击"下一步"，进入"构建模板"页面。
    表1基本信息配置说明 
   | **参数** | **说明**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
   |:---|:---|
   | 名称     | 创建的编译构建任务名称，可自定义。 - 支持中英文，数字，下划线"_"和连字符"-"。  - 字符长度范围为1\~115。  - 同项目下，不支持任务名重复。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | 所属项目   | 创建的编译构建任务所属项目。 - 当以项目入口方式访问编译构建服务时默认填写，无需手动填写。  - 当以服务入口访问时需根据实际情况选择[新建构建任务前准备工作]中创建的项目。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 任务分组   | 选择构建任务所属的分组。分组详情可参考[新建分组](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0070.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 代码源    | 选择实际需要编译的代码源。 - Repo：从[代码托管服务](https://support.huaweicloud.com/codeartsrepo/index.html)拉取代码进行构建。  - 其他项目Repo：从其他项目的代码托管中拉取代码进行构建，请选择已有的项目、该项目下已经创建的代码仓以及默认分支。  - 来自流水线：如果选择来自[流水线](https://support.huaweicloud.com/cloudpipeline/index.html)，则只能通过流水线任务驱动执行，不能单独执行。   以下为非CodeArts的第三方代码仓库。 - GitHub：拉取托管在GitHub上的代码进行构建。  - 通用Git：拉取托管在其他服务上的代码进行构建。  - GitCode：拉取托管在GitCode仓库上的代码进行构建。  - 码云：拉取托管在码云上的代码进行构建。  - Gerrit：拉取托管在Gerrit上的代码进行构建。   |
   | 服务扩展点  | 可选参数。当"代码源"选择为第三方代码仓时需要配置，首次使用第三方代码仓，需新建服务扩展点。新建步骤可参考[新建CodeArts服务扩展点](https://support.huaweicloud.com/usermanual-devcloud/devcloud_01_0019.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | 代码仓    | 选择实际需要编译的代码仓。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | 默认分支   | 选择仓库默认分支。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | 描述     | 可选参数。根据实际场景对编译构建任务的描述。字符长度范围0\~512。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | 超时时间   | 设置构建任务执行的超时时间，超出该时间，构建任务停止执行。 时长最大值根据套餐不同而不同，详情可参考[编译构建规格特性差异](https://support.huaweicloud.com/price-devcloud/codearts_29_0006.html#section5)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
   
4. CodeArts Build内置30+种系统构建模板，您可以根据实际需要选择构建模板，模板说明参考[表2]，选择后单击"确定"，构建任务即可新建完成。
   - 也可以选择"空白构建模板"，然后在[配置构建任务](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0059.html)时添加实际使用的构建步骤。
   
   - 如果系统构建模板不满足使用要求，也可以[自定义模板]。
      表2系统构建模板说明 
     | 模板名称                    | 说明                                                             | 语言                   | 模板阶段                                                      |
     |:---|:---|:---|:---|
     | Maven                   | 使用Apache Maven构建Java项目。                                        | Java                 | 构建环境配置、代码下载配置、Maven构建、上传软件包到软件发布库                         |
     | QuickApp                | 使用Npm构建QuickApp快应用。                                            | JavaScript           | 构建环境配置、代码下载配置、Android快应用构建、上传软件包到软件发布库                    |
     | Django                  | Django项目构建。                                                    | Python               | 构建环境配置、代码下载配置、SetupTool构建、上传软件包到软件发布库                     |
     | Ionic Android App       | 使用HTML5应用程序开发框架Ionic开发Android应用。                               | Java                 | 构建环境配置、代码下载配置、lonic Android APP构建、上传软件包到软件发布库             |
     | Ant                     | Apache Ant是一个Java项目的构建工具，用于编译和部署Java项目。                        | Java                 | 构建环境配置、代码下载配置、Ant构建、上传软件包到软件发布库                           |
     | CMake                   | 使用CMake构建工具构建跨平台项目工程。                                          | C/C++                | 构建环境配置、代码下载配置、CMake构建、上传软件包到软件发布库                         |
     | Grails                  | 使用Grails快速Web应用开发框架构建Web应用。                                    | Groovy               | 构建环境配置、代码下载配置、Grails构建、上传软件包到软件发布库                        |
     | Grunt                   | 使用Grunt构建JavaScript工程和运行任务。                                    | JavaScript           | 构建环境配置、代码下载配置、Grunt构建、上传软件包到软件发布库                         |
     | gulp                    | 使用gulp前端自动化构建工具构建自动化工作流程和前端集成开发环境。                             | JavaScript           | 构建环境配置、代码下载配置、gulp构建、上传软件包到软件发布库                          |
     | Go                      | 使用Go语言环境构建。                                                    | Go                   | 构建环境配置、代码下载配置、Go语言构建、上传软件包到软件发布库                          |
     | MSBuild for Qt          | 使用msbuild构建工具执行引擎、构造QT工程、QT任务。                                 | Qt/vc++              | 构建环境配置、代码下载配置、MSBuild构建、上传软件包到软件发布库                       |
     | mono-linux              | 基于mono-linux(x86和ARM) 平台完成msbuild和dotnet编译。                    | JavaScript           | 构建环境配置、代码下载配置、mono-linux、上传软件包到软件发布库                      |
     | Maven-容器                | 使用Apache Maven构建Java项目，通过Dockerfile制作镜像并推送到SWR仓库。              | Java                 | 构建环境配置、代码下载配置、Maven构建、制作镜像并推送至SWR仓库                       |
     | ServiceStage-Maven-镜像构建 | 使用Apache Maven构建Java项目，通过Dockerfile制作镜像并推送到SWR仓库。              | Java                 | 构建环境配置、代码下载配置、Maven构建、制作镜像并推送至SWR仓库、执行shell命令、上传软件包到软件发布库 |
     | servicestage-npm-war    | 使用NPM构建成war包并上传到发布库。                                           | JavaScript           | 构建环境配置、代码下载配置、npm构建、执行shell命令、Ant构建、上传软件包到软件发布库           |
     | 发布maven私有包              | 使用私有依赖包来进行Maven构建Java项目，需要把软件包发布到CodeArts发布服务的Maven私有仓库。       | Java                 | 构建环境配置、代码下载配置、Maven构建                                     |
     | PHP                     | 安装了PHP运行环境和composer工具，可以为申明项目所依赖的PHP代码库提供安装和打包环境。              | Php                  | 构建环境配置、代码下载配置、PHP构建、上传软件包到软件发布库                           |
     | Bazel                   | 使用Bazel工具构建。                                                   | Java                 | 构建环境配置、代码下载配置、Bazel构建、上传软件包到软件发布库                         |
     | Shell                   | 执行shell命令。                                                     | 不涉及                  | 构建环境配置、代码下载配置、执行shell命令                                   |
     | sbt                     | 使用Sbt工具构建Scala和Java项目。                                         | Scala                | 构建环境配置、代码下载配置、Sbt构建、上传软件包到软件发布库                           |
     | npm                     | 使用Npm工具管理软件包，能做vue和webpack的构建。                                 | JavaScript           | 构建环境配置、代码下载配置、Npm构建、上传软件包到软件发布库                           |
     | Android APK             | Android构建系统编译应用资源和源代码，然后将它们打包成可供部署、签署和分发的APK。                  | Java                 | 构建环境配置、代码下载配置、Android构建、上传软件包到软件发布库                       |
     | Gradle                  | 使用Gradle项目自动化构建工具构建Java，Groovy和Scala项目。                        | Java                 | 构建环境配置、代码下载配置、Gradle构建、上传软件包到软件发布库                        |
     | 应用魔方部署任务                | 应用魔方AppCube的通用部署任务。                                            | Java                 | 构建环境配置、代码下载配置、下载发布仓库包、部署应用                                |
     | 应用魔方编译构建任务              | 应用魔方AppCube的通用编译任务。                                            | Java                 | 构建环境配置、代码下载配置、资产编译，上传软件包到软件发布库                            |
     | serverless-npm          | 使用Npm工具管理软件包，能做vue和webpack的构建。                                 | JavaScript           | 构建环境配置、代码下载配置、Npm构建、上传软件包到软件发布库                           |
     | DevStar-Maven-容器构建      | 使用Apache Maven构建Java项目，通过Dockerfile制作镜像并推送到SWR仓库。              | Java                 | 构建环境配置、代码下载配置、Maven构建、制作镜像并推送至SWR仓库                       |
     | DevStar-Npm-容器构建        | 使用Npm构建JavaScript项目，通过Dockerfile制作镜像并推送到SWR仓库。                 | JavaScript           | 构建环境配置、代码下载配置、Npm构建、制作镜像并推送至SWR仓库                         |
     | DevStar-Python-容器构建     | 构建Python项目，通过Dockerfile制作镜像并推送到SWR仓库。                          | Python               | 构建环境配置、代码下载配置、SetupTool构建、制作镜像并推送至SWR仓库                   |
     | MSBuild                 | 使用msbuild构建工具执行引擎、构造工程，支持.NET框架构建，包含.NET Core和.NET Frameworks。 | C#                   | 构建环境配置、代码下载配置、MSBuild构建、制作镜像并推送至SWR仓库                     |
     | Yarn                    | 使用Yarn构建JavaScript工程。                                          | JavaScript           | 构建环境配置、代码下载配置、Yarn构建、上传软件包到软件发布库                          |
     | buildImage              | 通过Dockerfile制作镜像并推送到SWR仓库。                                     | Java                 | 构建环境配置、代码下载配置、制作镜像并推送至SWR仓库                               |
     | HarmonyOS               | 使用Hvigor编译，测试和部署项目。                                            | ArkTS/JavaScript/C++ | 构建环境配置、代码下载配置、Hvigor构建、上传软件包到软件发布库                        |
     | PyInstaller             | 使用Pyinstaller工具压缩Python文件成为可执行程序。                              | Python               | 构建环境配置、代码下载配置、Pyinstaller、上传软件包到软件发布库                     |
     | Setuptools              | 使用Setuptools工具构建Python项目。                                      | Python               | 构建环境配置、代码下载配置、Setuptools构建、上传软件包到软件发布库                    |
     | 构建方舟编译器                 | 使用ubuntu操作系统编译方舟编译器。                                           | Java                 | 构建环境配置、代码下载配置、构建方舟编译器、上传软件包到软件发布库                         |
     | GNU-ARM                 | 使用GNU-ARM工具链设计、开发和使用ARM模拟器。                                    | C                    | 构建环境配置、代码下载配置、Gnu-arm构建、上传软件包到软件发布库                       |
        
     
    
5. 页面自动跳转到"构建步骤"页面，单击"保存"，构建任务创建完成。完成后可在编译构建任务列表页查看到该任务。 可参考[配置构建任务](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0059.html)继续完成构建任务的配置。
   ![](https://support.huaweicloud.com/usermanual-codeci/public_sys-resources/caution_3.0-zh-cn.png)
   如果使用的自定义构建模板中构建步骤超过50个，则保存任务会失败，需减少构建步骤数量至50以下。
   
 
 #### 自定义构建模板
- 如果需**将当前的构建任务保存为模板** ，以便后续创建构建任务时选择，则可以按照以下操作执行。
  1. 在构建任务历史页面，单击页面右上角![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000001983956345.png)，在下拉列表中选择"保存模板"。
  
  2. 在弹框中输入模板名称与模板描述，单击"保存"。
  
  3. 单击用户名，在下拉菜单中选择"租户设置"。
  
  4. 选择导航栏"编译构建 \> 自定义模板"，即可在列表中看到已保存的构建模板。
   
- 如果需**重新创建自定义模板** ，以便后续创建构建任务时选择，则可以按照以下操作执行。
  1. 在编译构建服务页面，选择"构建模板"页签。
  
  2. 单击"新建自定义模板"，按照[表3]配置模板参数，配置后单击"保存"。
      表3新建自定义构建模板 
     | 配置项  | **说明**                                                                                                                                                                                                                                                             |
     |:---|:---|
     | 基本信息 | - 模板名称：填写自定义模板名称。支持中英文，数字，下划线"_"和连接符"-"；字符长度范围为1\~115。  - 模板描述：填写该模板的描述信息，长度为0\~512字符。   |
     | 构建步骤 | 参考[构建任务基础配置](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_1049.html)和[配置构建步骤](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0057.html)下各个构建步骤的图形化构建进行配置。                                                                              |
     | 参数配置 | 参考[配置构建任务参数](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0037.html)进行配置。                                                                                                                                                                           |
        
     
  
  3. 保存后，即可在列表中看到已保存的构建模板。
   
**对已保存的构建模板，可以完成以下操作：**
![](https://support.huaweicloud.com/usermanual-codeci/public_sys-resources/caution_3.0-zh-cn.png)
只有模板创建者和租户账号可以编辑和删除自定义构建模板。
表4管理自定义模板 
| **操作** | **说明**                                                                                                                            |
|:---|:---|
| 搜索模板   | 在搜索框输入关键字，可搜索模板。                                                                                                                  |
| 生成任务   | 单击模板所在行的![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002368853685.png)，然后在新建构建任务页面填写基本信息，单击"确定"即可生成构建任务。 |
| 收藏模板   | 单击模板所在行的![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002368856717.png)，可以收藏该模板。                          |
| 编辑模板   | 单击模板所在行的![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002369015489.png)，选择"编辑"，可重新编辑该模板。                  |
| 复制模板   | 单击模板所在行的![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002334858564.png)，选择"复制"，可复制该模板并基于该模板重新编辑。          |
| 删除模板   | 单击模板所在行的![](https://support.huaweicloud.com/usermanual-codeci/zh-cn_image_0000002378234013.png)，选择"删除"，在弹框中单击"确定"，即可删除该模板。        |
   
#### 相关文档
- 关于图形化构建的使用示例，可参考[CodeArts Build最佳实践](https://support.huaweicloud.com/bestpractice-codeci/codeci_practice_1022.html)图形化构建的案例。
- 后续操作可参考[配置构建任务](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0059.html)。
- 关于构建任务的管理可参考[管理构建任务](https://support.huaweicloud.com/usermanual-codeci/devcloud_01_0032.html)。
 
