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