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文件进行通用。
|