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
   | 
         参数  | 
       
         类型  | 
       
         说明  | 
       
         是否必填  | 
      
|---|---|---|---|
| 
         version  | 
       
         string  | 
       
         YAML文件版本号配置项,用于指定YAML文件版本号。固定值,目前只支持2.0。  | 
       
         是  | 
      
| 
         params  | 
       
         map  | 
       
         全局参数配置项,参数必须以name和value成对出现,不赋值默认为空字符串,引用方式为${申明的参数名称name}。 示例中定义的参数,引用方式:作为参数输入时使用${machineArch},作为condition条件判断时使用申明的参数名称machineArch。 
  | 
       
         否  | 
      
| 
         env  | 
       
         map  | 
       
         构建环境配置项,与envs配置功能相同,两者配置其一即可,不支持条件语句condition。使用示例可参考配置构建环境。 
  | 
       
         否  | 
      
| 
         envs  | 
       
         map  | 
       
         构建环境配置项,与env配置功能相同,两者配置其一即可,支持条件语句condition,可以更加灵活的根据不同场景使用同一个YAML文件。 
  | 
       
         否  | 
      
| 
         steps  | 
       
         map  | 
       
         构建步骤执行配置项,配置构建流程,包括构建前准备,构建执行的具体任务。 
  | 
       
         是  | 
      
| 
         steps: PRE_BUILD  | 
       
         map  | 
       
         构建前准备工作配置项,一般用作于构建前的代码下载工作,目前只支持checkout、manifest_checkout 和sh配置项,一般情况配置其中一种即可。 
  | 
       
         是  | 
      
| 
         steps: BUILD  | 
       
         map  | 
       
         构建任务配置项,用于执行业务相关的具体构建任务,只支持特定构建步骤,构建步骤根据业务实际情况进行自由组合,具体构建步骤参考选择构建步骤。 
  | 
       
         是  | 
      
多任务构建
---
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
   | 
         参数  | 
       
         类型  | 
       
         说明  | 
       
         是否必填  | 
      
|---|---|---|---|
| 
         version  | 
       
         string  | 
       
         YAML文件版本号配置项,用于指定YAML文件版本号。固定值,目前只支持2.0。  | 
       
         是  | 
      
| 
         params  | 
       
         map  | 
       
         全局参数配置项,参数必须以name和value成对出现,不赋值默认为空字符串,引用方式为${申明的参数名称name}。 示例中定义的参数,引用方式:作为参数输入时使用${machineArch},作为condition条件判断时使用申明的参数名称machineArch。 
  | 
       
         否  | 
      
| 
         env  | 
       
         map  | 
       
         构建环境配置项,与envs配置功能相同,两者配置其一即可,不支持条件语句condition。 
  | 
       
         否  | 
      
| 
         envs  | 
       
         map  | 
       
         构建环境配置项,与env配置功能相同,两者配置其一即可,支持条件语句condition,可以更加灵活的根据不同场景使用同一个YAML文件。 
  | 
       
         否  | 
      
| 
         buildflow  | 
       
         map  | 
       
         
         在CodeArts Build中Build Job是构建的最小单元,适用于业务比较简单的场景,但是在有些复杂的构建场景下,Build Job可能并不能满足复杂的构建要求,比如多仓工程需要分布到多个机器上去构建,并且构建工程之间还存在一定的依赖关系,又或者希望将Build Job中的构建任务拆分成更加模块化,更加细粒度的构建任务,并按照依赖顺序进行构建。对于比较复杂的构建场景,可以使用BuildFlow将多个有依赖关系的Build Job按照有向无环图(DAG)的方式组装起来,CodeArts Build将会按照构建的依赖关系以最大的并发进行构建,提升构建效率。 
          
  | 
       
         是  | 
      
| 
         buildflows  | 
       
         map  | 
       
         当buildflow中需要做条件判断时使用buildflows,针对不同业务场景进行适配,更好的对YAML文件进行通用。 
  | 
       
         是  |