触发事件
触发事件是流水线能够执行的“触发器”,分为 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 * * ?'