文档首页/ 编译构建 CodeArts Build/ 用户指南/ 参考/ YAML文件语法配置说明
更新时间:2024-12-02 GMT+08:00

YAML文件语法配置说明

单任务构建

---
version: 2.0

#构建参数定义, 参数必须以name,value成对出现,不赋值默认为空字符串,引用方式为${申明的参数名称name}
params:
  - name: machineArch
    value: X86

#构建环境配置,env和envs配置为非必填项,二选一。当用户需要使用条件判断确定使用的主机规格与类型时,选择配置envs
env:
  resource:
    type: docker
    arch: X86
    class: 8U16G
    pool: Mydocker

envs:
  - condition: machineArch == 'ARM'
    resource:
      type: docker 
      arch: ARM
  - condition: machineArch == 'X86'
    resource:
      type: docker
      arch: X86

#构建步骤
steps:
  PRE_BUILD:
    - checkout:
        name: checkout
        inputs:
          scm: codehub
          url: git@codehub.devcloud.cn-north-7.ulanqab.huawei.com:huang-test00001/maven.git
          branch: master
          commit: commitId
          lfs: true
          submodule: true
          depth: 100
          tag: tag
          path: test
    - manifest_checkout:
        name: "manifest"
        inputs:
          manifest_url: https://codehub.devcloud.xxxxxxx.ulanqab.huawei.com/IPD-xxxxxx/manifest.git
          manifest_branch: master
          manifest_file: default.xml
          path: dir/dir02
          lfs: true
          repo_url: https://codehub.devcloud.xxxxxxx.ulanqab.huawei.com/IPD-xxxxxx/git-repo.git
          repo_branch: master
          username: someone
          password: PASSWD
    - sh:
        inputs:
          command: echo ${machineArch}

  BUILD: # 构建步骤
    - maven:
        name: Maven构建
        image: cloudbuild@maven3.5.3-jdk8-open
        inputs:
          settings:
            public_repos:
              - https://mirrors.huawei.com/maven
          cache: true
          unit_test:
            coverage: true
            ignore_errors: false
            report_path: "**/TEST*.xml"
            enable: true
            coverage_report_path: "**/site/jacoco"
          command: mvn package -Dmaven.test.failure.ignore=true -U -e -X -B
          check:
            project_dir: ./
            settings: ~/.m2/settings.xml
            param: ''
    - upload_artifact:
        inputs:
          path: "**/target/*.?ar"
          version: 2.1
          name: packageName
表1 单任务语法配置说明

参数

类型

说明

是否必填

version

string

YAML文件版本号配置项,用于指定YAML文件版本号。固定值,目前只支持2.0

params

map

全局参数配置项,参数必须以name和value成对出现,不赋值默认为空字符串,引用方式为${申明的参数名称name}。

示例中定义的参数,引用方式:作为参数输入时使用${machineArch},作为condition条件判断时使用申明的参数名称machineArch

  • name:参数名称
  • value:参数名称对应的参数值

env

map

构建环境配置项,与envs配置功能相同,两者配置其一即可,不支持条件语句condition。

  • resource:构建环境资源信息。
  • type:资源池类型,可输入参数值(docker或custom),docker表示使用默认执行机,custom表示使用自定义执行机,必填项。
  • arch:构建执行机架构,可输入参数值(X86或ARM),必填项。
  • class:构建执行机规格,可输入参数值(2U8G、4U8G、8U16G、16U32G、16U64G),当type=docker时该参数生效,默认为2U8G,其他规格需要单独购买对应规格的并发包才能正常使用,非必填。
  • pool:自定义资源池名称,当type=custom时该参数生效,非必填。

envs

map

构建环境配置项,与env配置功能相同,两者配置其一即可,支持条件语句condition,可以更加灵活的根据不同场景使用同一个YAML文件。

  • condition:条件判断语句,符合当前条件判断的会使用对应resource配置的环境信息。
  • resource:构建环境资源信息。
  • type:资源池类型,可输入参数值(docker或custom),docker表示使用默认执行机, custom表示使用自定义执行机,必填项。
  • arch:构建执行机架构,可输入参数值(X86或ARM),必填项。
  • class:构建执行机规格,可输入参数值(2U8G、4U8G、8U16G、16U32G、16U64G),当type=docker时需要填写该参数,默认为2U8G,其他规格需要单独购买对应规格的并发包才能正常使用,非必填。
  • pool:自定义资源池名称,当type=custom时需要填写该参数,非必填。

steps

map

构建步骤执行配置项,配置构建流程,包括构建前准备,构建执行的具体任务。

  • PRE_BUILD:构建前准备工作配置项,一般用作于构建前的代码下载工作。
  • BUILD:构建任务配置项,用于执行业务相关的具体构建任务。

steps:

PRE_BUILD

map

构建前准备工作配置项,一般用作于构建前的代码下载工作,目前只支持checkout、manifest_checkout 和sh配置项,一般情况配置其中一种即可。

  • checkout:单代码仓下载。
    • name:构建步骤名称,支持自定义名称,非必填,默认值“代码检出”
    • inputs:步骤输入参数,每个步骤的输入参数不同,详见具体构建步骤说明,必填项。
    • scm:代码源,当前只支持codehub,非必填,默认值codehub。
    • url:拉取代码的ssh地址或者https地址。codehub拉取代码时为ssh,其他代码源为https,必填项。
    • branch:拉取的代码分支名,必填项。
    • commit:commitId构建时拉取的commitId,非必填。
    • lfs: 是否开启git lfs,非必填,默认值false。
    • submodule:是否拉取子模块,非必填,默认值false。
    • depth:浅克隆深度。选择commitId构建时,depth必须大于等于commitId所在深度,非必填,默认值1。
    • tag:tag构建时拉取的tag名,如果commit和tag同时存在,优先执行commit构建,非必填。
    • path:clone的子路径,代码将会下载到子目录下面,非必填。
  • manifest_checkout: 多代码仓下载。
    • name:构建步骤名称,支持自定义名称,非必填,默认值“manifest_checkout”
    • inputs:步骤输入参数,每个步骤的输入参数不一样,详见具体构建步骤说明,必填项。
    • manifest_url:指定manifest仓地址,包含xml文件的仓库,必填项。
    • manifest_branch:指定manifest分支或revision,非必填,默认值HEAD。
    • manifest_file:manifest文件路径,定义的多仓库必须为同一种源码源,非必填,默认值default.xml。
    • path:自定义manifest所有子仓下载路径,为工作目录的相对路径路径,不能以“/”开头,不能包含“.”,非必填,默认值为当前工作目录。
    • lfs:是否开启git lfs,非必填,默认值false。
    • repo_url:repo仓库地址,非必填。
    • repo_branch:repo仓库分支,非必填,默认值stable。
    • username:下载仓库时使用的用户名,下载非公开仓库时需填写,非必填。
    • password:下载仓库时使用的密码,下载非公开仓库时需填写,非必填。
  • sh:执行shell命令。
    • inputs:步骤输入参数,每个步骤的输入参数不一样,详见具体构建步骤说明,必填项。
    • command:执行shell命令,当checkout或manifest_checkout无法满足业务诉求时,可以自定义编写shell命令进行构建前的准备工作,必填项

steps:

BUILD

map

构建任务配置项,用于执行业务相关的具体构建任务,只支持特定构建步骤,构建步骤根据业务实际情况进行自由组合,具体构建步骤参考选择构建步骤

  • maven:Maven构建步骤定义。
    • name:构建步骤名称,支持自定义名称,非必填,默认值“Maven构建”
    • image:构建使用的容器镜像,支持自定义和默认镜像,默认镜像名称为“cloudbuild@”加上工具版本名称,工具版本名称可以参考,必填项。
    • inputs:步骤输入参数,每个步骤的输入参数不一样,详见具体构建步骤说明,必填项。
    • settings:maven构建的settings配置,非必填。
    • public_repos:指定依赖包下载仓库地址。

      https://mirrors.huawei.com/maven

    • cache:是否开启缓存,非必填,默认值false。
    • unit_test:单元测试,非必填。
    • coverage:是否处理覆盖率数据,非必填,默认值false。
    • ignore_errors:是否忽略单元测试错误,非必填,默认值true。
    • report_path:单元测试数据路径,必填项。
    • enable:是否处理单元测试数据,非必填,默认值true。
    • coverage_report_path:覆盖率数据路径,非必填。
    • command:执行构建命令,必填项。
    • check:检查配置,非必填。
    • project_dir:工程路径,必填项。
    • settings:maven构建的settings路径,非必填。
    • param:maven参数,非必填。
  • upload_artifact:上传二进制包至artifact仓库构建步骤定义。
    • inputs:步骤输入参数,每个步骤的输入参数不一样,详见具体构建步骤说明,必填项。
    • path:上传文件的路径及名称,支持通配符,必填项。
    • version:版本名称,非必填,默认值以构建编号命名。
    • name:文件名,非必填,默认值以文件原始名命名。
  

多任务构建

---
version: 2.0

#构建参数定义, 参数必须以name,value成对出现,不赋值默认为空字符串,引用方式为${申明的参数名称name}
params:
  - name: machineArch
    value: X86
  - name: jobCondition
    value: 1
  - name: jobsCondition
    value: 1

# 构建环境配置,env和envs配置为非必填项,二选一。当用户需要使用条件判断确定使用的主机规格与类型时,选择配置envs
env:
  resource:
    type: docker
    arch: X86
    class: 8U16G
    pool: Mydocker
envs: 
  - condition: machineArch == 'ARM'
    resource:
      type: docker 
      arch: ARM
  - condition: machineArch == 'X86'
    resource:
      type: docker
      arch: X86

# buildflow和buildflows配置二选一。当需要使用条件判断执行的jobs时,选择配置buildflows
buildflow:
  strategy: Lazy
    jobs:
      - job: Job3
        depends_on:
          - Job1
          - Job2
        build_ref: .cloudbuild/build3.yml
      - job: Job1
        build_ref: .cloudbuild/build1.yml
      - job: Job2
        build_ref: .cloudbuild/build2.yml
buildflows:
  - condition: jobsCondition == 1
    jobs:
      - job: Job1
        build_ref: .cloudbuild/build1.yml
        params:
          - name: job1Params
            value: 1
      - condition: jobCondition == 1
        job: Job2
        build_ref: .cloudbuild/build2.yml
        params:
          - name: job2Params
            value: 2
      - job: Job3
        depends_on:
          - Job1
          - Job2
        build_ref: .cloudbuild/build3.yml
  - condition: jobsCondition == 2
    jobs:
      - job: Job3
        build_ref: .cloudbuild/build3.yml
表2 多任务语法配置说明

参数

类型

说明

是否必填

version

string

YAML文件版本号配置项,用于指定YAML文件版本号。固定值,目前只支持2.0。

params

map

全局参数配置项,参数必须以name和value成对出现,不赋值默认为空字符串,引用方式为${申明的参数名称name}。

示例中定义的参数,引用方式:作为参数输入时使用${machineArch},作为condition条件判断时使用申明的参数名称machineArch。

  • name:参数名称。
  • value:参数名称对应的参数值。

env

map

构建环境配置项,与envs配置功能相同,两者配置其一即可,不支持条件语句condition。

  • resource:构建环境资源信息。
  • type:资源池类型,可输入参数值(docker或custom),docker表示使用默认执行机,custom表示使用自定义执行机,必填项。
  • arch:构建执行机架构,可输入参数值(X86或ARM),必填项。
  • class:构建执行机规格,可输入参数值(2U8G、4U8G、8U16G、16U32G、16U64G),当type=docker时该参数生效,默认为2U8G,其他规格需要单独购买对应规格的并发包才能正常使用,非必填。
  • pool:自定义资源池名称,当type=custom时该参数生效,非必填。

envs

map

构建环境配置项,与env配置功能相同,两者配置其一即可,支持条件语句condition,可以更加灵活的根据不同场景使用同一个YAML文件。

  • condition:条件判断语句,符合当前条件判断的会使用对应resource配置的环境信息。
  • resource:构建环境资源信息。
  • type:资源池类型,可输入参数值(docker或custom),docker表示使用默认执行机, custom表示使用自定义执行机,必填项。
  • arch:构建执行机架构,可输入参数值(X86或ARM),必填项。
  • class:构建执行机规格,可输入参数值(2U8G、4U8G、8U16G、16U32G、16U64G),当type=docker时需要填写该参数,默认为2U8G,其他规格需要单独购买对应规格的并发包才能正常使用,非必填。
  • pool:自定义资源池名称,当type=custom时需要填写该参数,非必填。

buildflow

map

在CodeArts Build中Build Job是构建的最小单元,适用于业务比较简单的场景,但是在有些复杂的构建场景下,Build Job可能并不能满足复杂的构建要求,比如多仓工程需要分布到多个机器上去构建,并且构建工程之间还存在一定的依赖关系,又或者希望将Build Job中的构建任务拆分成更加模块化,更加细粒度的构建任务,并按照依赖顺序进行构建。对于比较复杂的构建场景,可以使用BuildFlow将多个有依赖关系的Build Job按照有向无环图(DAG)的方式组装起来,CodeArts Build将会按照构建的依赖关系以最大的并发进行构建,提升构建效率。
  • strategy:定义buildFlow运行的策略,支持Lazy(构建时间相对较长,但是可以节省构建资源,在资源池资源不足时使用,优先触发优先级高的子任务构建)和Eager(构建时间相对较快,可能造成资源空闲等待,在资源池充足时推荐使用,同步触发所有任务),非必填,默认值Eager。
  • jobs:任务编排,定义子job之间的依赖关系,必填项。
  • job:子任务名称,必填项。
  • depends_on:是否依赖子任务,填写依赖子任务的job名称,当前job依赖于Job1和Job2,非必填。
  • build_ref:当前job构建使用的YAML文件路径(相对于仓库根目录),YAML文件是一个独立的可执行构建的完整文件,参考单任务构建,必填项。
  • job:子任务名称,必填项。

    build_ref:当前job构建使用的YAML文件路径(相对于仓库根目录),必填项。

  • job:子任务名称,必填项。

    build_ref:当前job构建使用的YAML文件路径(相对于仓库根目录),必填项。

  

buildflows

map

当buildflow中需要做条件判断时使用buildflows,针对不同业务场景进行适配,更好的对YAML文件进行通用。

  • condition:条件判断语句,符合当前条件判断的会使用对应jobs配置,condition必须放在buildflows下面。
  • jobs:任务编排,定义子job之间的依赖关系,必填项。
  • job:子任务名称,必填项。

    build_ref:当前job构建使用的YAML文件路径(相对于仓库根目录),YAML文件是一个独立的可执行构建的完整文件,参考单任务构建,必填项。

  • params:子任务定义的参数,作用域为子任务引用的YAML文件,可以在子任务使用的YAML文件中引用此处定义的参数,非必填。
    • name:参数名称。
    • value:参数名称对应的参数值。
  • condition:条件判断语句,符合当前条件判断的会使用对应job配置。
  • job:子任务名称,必填项。

    build_ref:当前job构建使用的YAML文件路径(相对于仓库根目录),必填项。

  • params:子任务定义的参数,作用域为子任务引用的YAML文件,非必填。

    name:参数名称。

    value:参数名称对应的参数值。

  • job:子任务名称,必填项。

    depends_on:是否依赖子任务,填写依赖子任务的job名称,当前job依赖于Job1和Job2,非必填。

    build_ref:当前job构建使用的YAML文件路径(相对于仓库根目录),必填项。