文档首页> 编译构建 CodeArts Build> 最佳实践> 使用Maven构建执行多任务构建工程(内置执行机,代码化构建)
更新时间:2024-06-20 GMT+08:00
分享

使用Maven构建执行多任务构建工程(内置执行机,代码化构建)

应用场景

在编译构建中,构建任务是构建的最小单元,适用于业务比较简单的场景,但是在有些复杂的构建场景下,构建任务可能并不能满足复杂的构建要求。例如,用户希望更模块化、更加细粒度的拆分构建任务,并按照构建任务之间的依赖顺序进行构建。

为此,编译构建服务支持使用BuildFlow将多个存在依赖关系的构建任务按照有向无环图(DAG)的方式组装起来,BuildFlow将会按照构建的依赖关系并发进行构建。

本示例为您演示构建任务3依赖于构建任务1和构建任务2的构建工程。

约束与限制

使用BuildFlow构建仅支持使用CodeArts Repo中的代码。

操作流程

流程

说明

访问编译构建服务首页

介绍如何访问编译构建服务首页。

创建项目

为本实践创建项目。

创建CodeArts Repo代码仓

为本实践创建Repo代码仓用于存储代码文件。

创建build.yml文件

通过“build.yml”定义整个构建的流程。

创建build.yml中使用的子任务执行脚本

创建整个构建过程中依赖的构建任务的执行脚本。

创建并执行编译构建任务

创建BuildFlow编译构建任务并执行。

查看编译构建结果

查看编译构建结果。

访问编译构建服务首页

  1. 登录华为云控制台页面
  2. 单击页面左上角,在服务列表中选择开发与运维 > 编译构建 CodeArts Build
  3. 单击“立即使用”,进入编译构建服务首页。

创建项目

  1. 单击导航栏“首页”
  2. 单击“新建项目”
  3. 单击“Scrum”项目模板。
  4. 项目名称填写“Scrum01”,其它保持默认即可。
  5. 单击“确定”后,进入到“Scrum01”项目下。

创建CodeArts Repo代码仓

  1. 在页面导航栏选择代码 > 代码托管
  2. 单击“新建仓库”,选择“模板仓库”
  3. 单击“下一步”,选择“Java Maven Demo”模板。
  4. 单击“下一步”,填写代码仓库名称为“Repo01”,其他参数保持默认即可。
  5. 单击“确定”

创建build.yml文件

  1. 在代码仓详情页,选择新建 > 新建目录
  2. 目录名称填写“.cloudbuild”,描述信息自定义即可。
  3. 单击“确定”
  4. “.cloudbuild”目录下,选择新建 > 新建文件,文件名命名为“build.yml”,文件中代码内容如下。

    version: 2.0 # 必须是2.0,该版本号必填且唯一
    params: # 构建参数,可在构建过程中引用
      - name: condition_param
        value: 1
    # envs配置为非必填项。
    envs: 
      - condition: condition_param == 0 # 主机规格与类型的判断条件,不满足条件则不使用以下主机规格与类型
        resource:
          type: docker 
          arch: ARM
      - condition: condition_param == 1 # 主机规格与类型的判断条件,满足条件会使用以下主机规格与类型
        resource:
          type: docker
          arch: X86
    
    buildflow:
      jobs: # 构建任务
        - job: Job3 # 子任务的名称,可自定义
          depends_on: # 定义job的依赖,此处表示Job3依赖Job1和Job2
            - Job1
            - Job2
          build_ref: .cloudbuild/build_job3.yml # 定义Job3在构建过程中需要运行的yaml构建脚本
        - job: Job1
          build_ref: .cloudbuild/build_job1.yml # 定义Job1在构建过程中需要运行的yaml构建脚本
        - job: Job2
          build_ref: .cloudbuild/build_job2.yml # 定义Job2在构建过程中需要运行的yaml构建脚本

    “build.yml”定义了整个构建的流程,当前定义了3个构建任务,Job3依赖于Job1和Job2,即构建优先级Job1、Job2 > Job3,且Job1和Job2优先级相同会同步触发。“build_ref”定义了构建子任务所需运行的构建脚本。

创建build.yml中使用的子任务执行脚本

  1. “.cloudbuild”目录下,选择新建 > 新建文件,文件名命名为“build_job1.yml”,文件中代码示例如下。

    version: 2.0
    steps:
      BUILD:
      - maven:
          image: cloudbuild@maven3.5.3-jdk8-open # 使用的构建镜像,用户可以自定义镜像
          inputs:
            settings:
              public_repos:
                - https://mirrors.huawei.com/maven # 配置依赖仓
            cache: true # 是否开启缓存
            command: mvn package -Dmaven.test.failure.ignore=true -U -e -X -B # 执行命令

  2. 参考1创建“build_job2.yml”“build_job3.yml”,代码示例保持一致即可。
  3. 文件创建完成后,代码仓文件目录如下图所示。

创建并执行编译构建任务

  1. 在页面导航中选择持续交付 > 编译构建
  2. 单击“新建任务”,根据表1填写参数信息。

    表1 基本信息配置

    参数名称

    参数说明

    任务名称

    自定义任务名称,例如:BuildFlow。

    代码源

    选择“Repo”

    代码仓

    选择创建CodeArts Repo代码仓中创建的代码仓库名称“Repo01”

    默认分支

    选择创建CodeArts Repo代码仓中创建的分支,若没有创建,选择默认“master”即可。

    任务描述

    对该构建任务的描述。

  3. 单击“下一步”,选择“Maven”模板。
  4. 单击“确定”,进入构建步骤配置页面。
  5. 单击“代码化”页签,会自动加载“Repo01”代码仓中的构建运行脚本。
  6. 单击“保存并执行”,在弹出的窗口中单击“确定”即可跳转到构建任务运行页面。

查看编译构建结果

“构建流程”页签中展示了当前构建任务运行的全量流程图,在构建任务未执行完成时,可以清晰的看到Job1和Job2是并行执行,Job3是等待Job1和Job2执行完成后才执行。

  1. 单击“构建流程”页签中左侧菜单的“Job1”或右侧界面的绿色矩形图形的“Job1”,进入Job1构建任务的执行详情页面,可以查看Job1构建任务的构建日志。

    其中,

    • “步骤日志”页签展示了当前构建任务运行顺序和资源调度情况。
    • “构建参数”页签展示了当前构建任务全局的参数信息。
    • “构建脚本”页签展示了当前构建任务执行的脚本内容。

  2. 参考1可查看“Job2”“Job3”的构建任务执行详情。
分享:

    相关文档

    相关产品