编译构建 CODEARTS BUILD-YAML文件语法配置说明:单任务构建代码示例

时间:2024-12-13 16:29:09

单任务构建代码示例

---
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: 多代码仓下载。使用示例可参考代码化构建(manifest多仓下载)
    • 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:文件名,非必填,默认值以文件原始名命名。
  
support.huaweicloud.com/usermanual-codeci/codeci_ref_0001.html