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 |