yaml文件结构详解
yaml文件示例:
该示例是一个简单的通过yaml文件执行Maven构建模板:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
version: 2.0 # 必须是2.0 params: # 构建参数,可在构建过程中引用 - name: paramA value: valueA - name: paramB value: valueB env: # 非必填,但优先级最高,若在此定义了主机规格与类型,则不使用任务配置>基本信息里面选择的主机类型和规格 resource: type:docker # 资源池类型:docker、Linux、MAC或custom arch:X86 # 构建环境主机类型:X86或ARM class:8U16G # 规格:2U8G、4U8G、8U16G、16U32G或16U64G,当type为custom时无需填写该参数 pool:Mydocker #资源池名称,当type为custom时需要填写该参数 steps: PRE_BUILD: - checkout: name: 代码下载 # 可选 inputs: # 步骤参数 scm: codehub # 代码来源:只支持Repo url: xxxxxxxxx # 拉取代码的ssh地址。 branch: ${codeBranch} # 拉取的代码分支:支持参数化。 - sh: inputs: command: echo ${paramA} BUILD: - maven: # 步骤关键字,仅支持特定关键字 name: maven build # 可选 image: xxx # 可以自定义镜像地址,请看下方说明 inputs: command: mvn clean package - upload_artifact: inputs: path: "**/target/*.?ar" |
在这个yml文件中,主要分为四个部分:
- 版本号(version):示例文件中定义了“version”为2.0,该版本号必填且唯一。
- 构建环境(env):示例文件中定义了资源池类型、构建环境主机类型、主机规格。
- 构建参数(params):示例文件中定义了“paramA”和“paramB”两个参数,可在构建过程中引用被定义的参数,构建参数可不填,优先使用任务配置中的构建参数。
- 构建步骤(steps):示例文件中“steps”层级下又分为三个阶段:
- PRE_BUILD:用于做构建前的准备,例如下载代码,执行shell等。
- BUILD:用于构建,其下可定义maven、npm、go、python、ant、CMake、mono、sbt、android、bazel等主流工程构建。构建完成后,可定义制作镜像上传到SWR仓库、上传文件到OBS、下载文件、上传二进制包至仓库、下载二进制包、执行docker命令等构建后操作。
image有两种格式:- cloudbuild@maven3.5.3-jdk8-open ,以cloudbuild开始,@作为分隔符,后面是编译构建提供的默认镜像。
- 完整的swr镜像地址,例如:swr.example.example.com/codeci_test/demo:141d26c455abd6d7xxxxxxxxxxxxxxxxxxxx
构建步骤介绍
在steps中,共有PRE_BUILD和BUILD两个阶段,每一个阶段都可以定义一系列的构建步骤,支持定义的构建步骤,详见下表:
PRE_BUILD |
说明 |
操作指导 |
---|---|---|
- checkout |
代码下载 |
|
- sh |
执行shell命令 |
BUILD |
说明 |
操作指导 |
---|---|---|
- maven |
Maven构建 |
|
- npm |
NPM构建 |
|
- yarn |
Yarn构建 |
|
- go |
Golang构建 |
|
- gulp |
gulp构建 |
|
- grunt |
Grunt构建 |
|
- php |
PHP构建 |
|
- gnu_arm |
Gnu-arm构建 |
|
- python |
SetupTool构建 PyInstaller构建 Python构建 |
|
- gradle |
Gradle构建 |
|
- ant |
Ant构建 |
|
- cmake |
CMake构建 |
|
- mono |
mono构建 |
|
- flutter |
Flutter构建 |
|
- sbt |
sbt构建 |
|
- android |
Android构建 |
|
- android_sign |
Android APK签名 |
|
- quick_app |
Android快应用构建 |
|
- bazel |
bazel构建 |
|
- grails |
Grails构建 |
|
- build_image |
制作镜像并上传到SWR仓库 |
|
- upload_obs |
上传文件至OBS |
|
- download_file |
下载文件 |
|
- upload_artifact |
上传二进制包到仓库 |
|
- download_artifact |
下载二进制包 |
|
- docker |
执行docker命令 |