Gitee Go 流水线配置通过 YAML
语言来描述构建,有关 YAML
的语法教程可参考学习 阮一峰
老师的《YAML 语言教程》。
特别注意:Gitee Go 的
yaml
配置文件对内容大小写敏感,对应节点和属性需和本文章内容保持一致。
具体流水线配置文件结构参考如下:
# ========================================================
# Gitee Go 流水线配置样例文件
# 功能:实现一个 Maven 命令行工程初始化并构建
# ========================================================
name: gitee-go-maven # 流水线唯一标识,定义一个唯一 ID 标识为 gitee-go-maven,名称为 “Maven-流水线示例” 的流水线
displayName: 'Maven-流水线示例' # 流水线名字
triggers: # 流水线触发器配置,支持通过 push 事件触发构建
push: # 通过 push方式触发
- matchType: PRECISE # matchType
branch: master # 触发分支名(值为字符串),目前为当前所在分支名,暂不支持跨分支触发
commitMessage: '' # 通过匹配当前提交的 CommitMessage 决定是否执行流水线
stages: # 构建阶段配置
- stage: # 单个构建阶段
name: maven-build-stage # 构建阶段唯一标识
displayName: 'Maven Stage' # 构建阶段名称
failFast: false # 允许快速失败,即当 Stage 中有任务失败时,直接结束整个 Stage
steps: # 构建步骤配置
- step: mavenbuild@1 # 构建步骤的任务类型(枚举类型),用于决定使用什么构建环境。目前不支持自定义。当前示例为采用 Maven 编译环境
name: maven-build # 构建步骤唯一标识,当前示例中定义了一个标识为 maven-build 的构建步骤
displayName: 'Maven Step' # 构建步骤名称当前示例中定义了一个名为 “Maven Step” 的构建步骤
inputs: # 构建输入参数设定
mavenPomFile: 'pom.xml' # pom文件位置,非必填项
jdkVersion: 8 # 语言版本,指定 JDK 环境版本为 1.8
mavenVersion: 3.6 # 工具版本,指定 Maven 环境版本为 3.6
goals: | # 构建脚本,当前示例中使用 Maven 命令初始化、构建一个 Maven 工程并执行输出内容
mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DinteractiveMode=false -DarchetypeCatalog=internal -DgroupId=com.gitee.go.maven -DartifactId=helloworld -T20
cd helloworld
mvn clean
mvn compile
mvn test-compile
mvn package
java -cp target/helloworld-1.0-SNAPSHOT.jar com.gitee.go.maven.App
节点名称 | 释义 | 备注 |
---|---|---|
name | 流水线唯一标识 | 可自定义,目前单个仓库下仅流水线仅支持定义一次 (只取定义一条流水线的第一个yaml文件) |
displayName | 流水线名字 | 可自定义 |
triggers | 流水线触发器 | 详见下方 Trigger 构建触发器
|
commitMessage | 提交信息触发规则 | 通过正则配置,提交代码时通过 commit Message 决定是否触发 |
Stages | 构建阶段 | 构建阶段,GiteeGo 允许有多个构建阶段,依照配置文件自上而下串行执行 |
steps | 构建步骤 | 构建阶段中的构建步骤,详见下方 Steps 构建步骤
|
配置文件的
triggers
节点主要用于描述和定义当前触发当前分支下流水线的事件,目前仅支持代码push
事件,分支名支持正则匹配。
具体举例如下:
triggers: # 流水线触发器配置,支持通过 push 事件触发构建
push: # 通过 push方式触发
- matchType: PRECISE # 触发方式,支持多种触发策略,PRECISE 为精准触发(触发分支和配置分支名完全匹配)
branch: master # 触发分支名(值为字符串),目前为当前所在分支名,暂不支持跨分支触发
配置文件的
steps
节点主要用于描述和定义流水线构建的步骤。
在单条流水线中,允许存在多个构建步骤(多个 step
节点)。在当前公测版本 Gitee Go
中,仅支持单个步骤,后续将逐步完善开放多步骤的能力。对单个 step
节点的描述定义说明如下:
- step: mavenbuild@1 # 任务类型,参考值详见本文 `构建任务类型` 一节,不可自定义
name: maven-build # 构建步骤唯一标识,可自定义,必填
displayName: Maven编译 # 构建步骤名称,可自定义,必填
inputs: # 构建步骤输入参数
mavenPomFile: 'pom.xml' # pom文件位置,非必填项,仅构建 Maven 使用
goals: 'echo success' # 自定义用于构建项目的 SHELL 脚本。默认当前起始位置为Git仓库的根目录
jdkVersion: 8 # 构建语言版本,对应任务类型,参考值详见本文 `构建任务类型` 一节
mavenVersion: 3.0 # 构建工具版本,对应任务类型,参考值详见本文 `构建任务类型` 一节
uploadArtifact: true # 构建完成后是否将构建物作为制品产出,非必填项,与下方上传参数需同时定义
uploadArtifactOptions: # 构建物上传参数,非必填项,与 `uploadArtifact` 参数需同时定义
artifactPath: './output' # 构建完成后要打包的构建物所在路径
artifactRepository: '制品库名称' # 制品库名称,可以理解为一批构建物的集合
artifactName: 'maven-output' # 构建物打包后的制品名
Gitee Go 目前已支持 Maven、Gradle、npm、Python、Ant、PHP、Golang 等语言的持续构建与集成能力。对应环境的构建类型如下:
构建环境 | 构建类型 | 语言和工具版本 |
---|---|---|
Maven | mavenbuild@1 | jdkVersion: 8 mavenVersion: 3.0 / 3.1 / 3.2 / 3.5 / 3.6 |
Gradle | gradlebuild@1 | jdkVersion: 8 gradleVersion: 5.1 / 5.2 / 5.3 / 5.4 |
npm | npmbuild@1 | nodeVersion: 10.1 / 10.15 / 10.16 / 12.7 / 14.15 |
Python | pythonbuild@1 | pythonVersion: 2.7 / 3.7 |
Ant | antbuild@1 | antVersion: 1.10.7 / 1.10.6 / 1.0.14 |
PHP | phpbuild@1 | phpVersion: 7.3 |
Golang | golangbuild@1 | golangVersion: 1.11 / 1.12 / 1.13 |