跳到主要内容

触发事件

触发事件是流水线能够执行的“触发器”,分为 Push 触发、Pull Request 触发、定时触发三类。

Push 触发

Push 事件由以下三种行为产生,本地推送、分支合并、PR 合并。因此,只要在流水线中配置了 Push 事件触发,以上三种操作都会自动触发流水线执行。

在 Push 事件下,提供以下三种匹配规则,三种匹配规则是交集关系,即同时设置了匹配规则,只有满足所有规则时才可触发流水线。

  • 分支匹配:共有以下四种匹配规则

    • 前缀匹配:如填写dev,则匹配dev开头的所有分支;当填写空时,匹配所有分支
    • 精确匹配:如填写dev,仅会匹配dev分支
    • 正则匹配:如填写dev.*,则匹配前缀为dev的所有分支
    • 精确排除:如填写dev,则向dev分支提交代码不会触发流水线。精确排除的规则优先级最高,通常和其他规则混合使用
  • Tag 匹配:同分支匹配一样,共有以下四种匹配规则

    • 前缀匹配:如填写v1,则匹配v1开头的所有 Tag;当填写空时,匹配所有 Tag
    • 精确匹配:如填写v1.1.1,仅会匹配v1.1.1 Tag
    • 正则匹配:如填写v1.*,则匹配前缀为v1的所有 Tag
    • 精确排除:如填写v1.1.1,则创建v1.1.1 Tag 不会触发流水线。精确排除的规则优先级最高,通常和其他规则混合使用
  • 提交注释关键字匹配:仅支持正则匹配

    • 正则匹配:如填写.*build.*,则在提交代码时 Commit Message 中包含 build 关键字的都可以触发流水线

      具体场景: 分支匹配配置了精确匹配master,Tag 匹配配置了前缀匹配v1,提交注释关键字匹配配置了.*build.*,如下图 Push 具体场景 那么:

  • 当向 master 提交代码,但 Commit Message 是“Gitee Go”时,流水线不能触发

  • 当向 master 提交代码,但 Commit Message 是“Gitee build Go”时,流水线能触发

  • 当推送 Tag 为 v1.10.1,但 Commit Message 是“Gitee Go”时,流水线不能触发

  • 当推送 Tag 为 v1.10.1,但 Commit Message 是“Gitee build Go”时,流水线能触发

    使用事例: 【推荐】您可以在可视化编辑界面定义: Push 配置

    您可以在 Yml 中直接定义:

# 表示开启流水线自动触发
triggers:
# 开启 push 事件监听,可匹配分支、Tag、提交注释 (Commit Message)
push:
# 开启分支匹配,支持数字、字母(包含大小写)、中划线、下划线以及通用字符,最大 64 个字符
branches:
# 开启前缀匹配,可以填写多个前缀,不填默认监听所有分支
prefix:
- release
# 开启精确匹配,可以填写多个分支,请填写完整分支名称
precise:
- master
# 开启正则匹配,可以填写多个正则表达式,请填写正则表达式
include:
- master
- dev*
# 开启精确排除,可以填写多个分支,请填写完整分支名称
exclude:
- release
# 开启 Tag 匹配,支持数字、字母(包含大小写)、中划线、下划线以及通用字符,最大 64 个字符
tags:
# 开启前缀匹配,可以填写多个前缀,不填默认监听所有 Tag
prefix:
- v1
# 开启精确匹配,可以填写多个 Tag,请填写完整 Tag 名称
precise:
- v1.1.1
# 开启正则匹配,可以填写多个正则表达式,请填写正则表达式
include:
- ^v1.*
# 开启精确排除,可以填写多个 Tag,请填写完整 Tag 名称
exclude:
- v3
# 开启提交注释监听,支持中文、数字、字母(包含大小写)、中划线、下划线以及通用字符,最大 256 个字符
commitMessages:
# 开启正则匹配,可以填写多个正则表达式,请填写正则表达式
include:
- '.*部署测试'

Pull Request 触发

  • Pull Request 事件由页面发起 PR、更新 PR 行为产生。因此,只要在流水线中配置了 Push 事件触发,以上两种种操作都会自动触发流水线执行。

  • 在 Push 事件下,提供以下三种匹配规则,三种匹配规则是交集关系,即同时设置了匹配规则,只有满足所有规则时才可触发流水线

    • 分支匹配:共有以下四种匹配规则

      • 前缀匹配:如填写dev,则匹配dev开头的所有分支;当填写空时,匹配所有分支
      • 精确匹配:如填写dev,仅会匹配dev分支
      • 正则匹配:如填写dev.*,则匹配前缀为dev的所有分支
      • 精确排除:如填写dev,则向dev分支提交代码不会触发流水线。精确排除的规则优先级最高,通常和其他规则混合使用
    • 提交注释关键字匹配:仅支持正则匹配,此处匹配的是发起 PR 时的标题,如下图

      - 正则匹配:如填写`.*build.*`,则在提交代码时 Commit Message 中包含`build`关键字的都可以触发流水线

      PR 标题匹配

    • 评论匹配:仅支持正则匹配,此处匹配的 PR 已经发起后,对 PR 进行评论,如下图

      - 正则匹配:如填写。*build.*,则在提交代码时 Commit Message 中包含 build 关键字的都可以触发流水线

      PR 评论匹配

      重要:PR 触发构建时执行逻辑说明!!! 当发起一个 PR 时,就会存在源分支、目标分支两个主体。以下内容以 dev 分支向 master 分支发起一个 PR 为例说明所有情况。此时 dev 为源分支,master 为目标分支。

  • 创建 PR ,发起 dev 向 master 的 PR,根据 dev 下最新 commit 的 yml 触发流水线,流水线的构建任务拉取代码时会进行自动预合并,即构建的代码为 master + dev 的增量代码

  • PR 创建后 ,master 有代码更新,不会引起本次 PR 变化

  • PR 创建后 ,向 dev 提交补丁,会触发 PR 更新,此时的逻辑和 PR 创建时一样。仍然读取源分支 dev 下最新的 commit 下的 yml 并生成流水线

  • PR 创建后 ,向 PR 评论,会触发 PR 的更新,此时的逻辑和 PR 创建时一样。仍然读取源分支 dev 下最新的 commit 下的 yml 并生成流水线

  • PR 合并后 ,会产生一条 Push 消息,不会引起本次 PR 变化

    使用事例: 【推荐】您可以在可视化编辑界面定义: PR 编辑

    您可以在 Yml 中直接定义:

# 表示开启流水线自动触发
triggers:
# 开启 pull request 事件监听,可匹配分支、提交注释 (PR Title)、评论
pr:
# 开启分支匹配,支持数字、字母(包含大小写)、中划线、下划线以及通用字符,最大 64 个字符
branches:
# 开启前缀匹配,可以填写多个前缀,不填默认监听所有分支
prefix:
- release
# 开启精确匹配,可以填写多个分支,请填写完整分支名称
precise:
- master
# 开启正则匹配,可以填写多个正则表达式,请填写正则表达式
include:
- master
- dev*
# 开启精确排除,可以填写多个分支,请填写完整分支名称
exclude:
- release
# 开启提交注释监听,支持中文、数字、字母(包含大小写)、中划线、下划线以及通用字符,最大 256 个字符
commitMessages:
# 开启正则匹配,可以填写多个正则表达式,请填写正则表达式
include:
- '.*部署测试'
# 开启 PR 评论监听,支持中文、数字、字母(包含大小写)、中划线、下划线以及通用字符,最大 256 个字符
comments:
# 开启正则匹配,可以填写多个正则表达式,请填写正则表达式
include:
- '.*部署测试'

定时触发

定时触发根据标准的 cron 表达式填写,秒级系统默认填充。 基本规则

cron文件的格式:M H D m d y 
M: 分钟(0-59)
H:小时(0-23)
D:天(1-31)
m: 月(1-12)
d: 一星期内的天(1~7)注:根据国外时间来,周日是 1
y:年,可以选填

除数字外,还有几个特殊符号"*"、"/"和"-"、","
*:代表所有取值范围内数字
/:代表每的意思
*/5:表示每5个单位
-:代表从某个数字到某个数字,
,:分开几个离散的数字。

0 */2 * * ? 每两小时进行一次
0 23-7/2,8 * * ? 晚上11点到7点每两小时一次,8点一次
15 10 ? * 1-5 周日至周四的上午10:15 触发
0 12 ? * 4 表示每个星期三中午12点

注意:星期和天不能同时用*,否则会发生冲突,此外输入要用英文输入法

使用事例: 【推荐】您可以在可视化编辑界面定义: 定时触发

您可以在 Yml 中直接定义:

# 表示开启流水线自动触发
triggers:
schedule:
# 目前仅支持填写一个定时表达式,暂时还未开放多个
- cron: '0 */2 * * ?'