触发事件
触发事件是流水线能够执行的“触发器”,分为 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.*
,如下图那么:
当向 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”时,流水线能触发
使用事例: 【推荐】您可以在可视化编辑界面定义:
您可以在 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 进行评论,如下图
- 正则匹配:如填写。*build.*,则在提交代码时 Commit Message 中包含 build 关键字的都可以触发流水线
重要: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 变化
使用事例: 【推荐】您可以在可视化编辑界面定义:
您可以在 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 * * ?'