可以自定义通知,方法是订阅与 Slack 频道相关的活动,并取消订阅对项目帮助不大的活动。
通知默认启用
默认情况下启用以下通知,但你可以使用命令禁用其中 /github unsubscribe owner/repo [event] 任何通知。
| 事件 | Description |
|---|---|
issues | 打开、关闭或重新打开的问题。 |
pulls | 新的或合并的拉取请求,以及标记为可供审核的草稿拉取请求。 |
commits | 默认分支上的新提交。 |
releases | 已发布的版本。 |
deployments | 部署状态更新。 |
通知默认情况下已禁用
默认情况下禁用以下通知,但可以使用命令启用其中 /github subscribe owner/repo [event] 任何通知。
| 事件 | Description |
|---|---|
reviews | 拉取请求评审。 |
workflows | Actions 工作流运行。 |
branches | 创建或删除分支。 |
comments | 对问题和拉取请求的新评论。 |
commits | 所有提交到任何分支。 |
discussions | 创建或有回应的讨论。 |
+label:"your label" | 基于标签的问题、拉取请求和评论。 |
您可以同时订阅或取消订阅多个设置项。 例如:
- 若要打开拉取请求审核和评论的活动,请使用
/github subscribe owner/repo reviews comments。 - 若要关闭问题和拉取请求的活动,请使用
/github unsubscribe owner/repo issues pulls。
筛选通知
可以使用分支和标签筛选器进一步自定义通知。 分支筛选器允许基于分支名称筛选提交通知,而标签筛选器允许根据应用于它们的标签筛选问题和拉取请求通知。
提交通知的分支筛选器
通过分支筛选器,可以根据分支名称筛选提交通知。 默认情况下,订阅 commits 事件时,你将收到默认分支的通知。 但是,可以选择针对特定分支或分支模式或所有分支进行筛选。
| 示例配置 | Description |
|---|---|
/github subscribe owner/repo commits | 接收默认分支的提交通知。 |
/github subscribe owner/repo commits:main | 仅接收 main 分支的提交通知。 |
/github subscribe owner/repo commits:feature/* | 接收所有以 feature/ 开头的分支的提交通知。 |
/github subscribe owner/repo commits:* | 接收所有分支的提交通知。 |
注意
你可能以前曾使用 commits:all 筛选器来接收所有分支的提交通知。 此筛选器为 已弃用。 若要接收所有分支的提交通知,请改用 commits:* 筛选器。 如果之前已设置 commits:all 筛选器,它将继续工作,直到更新配置以使用 commits:* 筛选器。
问题通知和拉取请求通知的标签筛选器
标签筛选器允许根据应用于问题和拉取请求的标签筛选通知。 设置标签筛选器时,仅发送包含指定标签的事件通知。 有关标签的详细信息,请参阅 管理标签 和 筛选和搜索议题以及拉取请求。
目前,每个存储库只能有一个所需的标签筛选器。 下表显示了哪些事件类型受标签筛选器的影响。
| 事件类型 | 按标签筛选 |
|---|---|
| 拉取请求 | |
| 问题 | |
| 注释 | |
| Reviews | |
| 提交/推送 | |
| 分支 |
创建标签筛选器
若要创建标签筛选器,请使用以下命令格式:
/github subscribe [owner/repo] +label:"your label"
/github subscribe [owner/repo] +label:"your label"
这会使用值 your label创建必需标签筛选器。 除非具有该标签,否则支持筛选器的传入事件将被丢弃。
更新标签筛选器
可以通过指定新的标签值来更新现有标签筛选器:
/github subscribe [owner/repo] +label:"new label"
/github subscribe [owner/repo] +label:"new label"
这将会把“你的标签”筛选器替换为“新的标签”筛选器。
删除标签筛选器
可以使用取消订阅命令和 +label 选项删除现有标签筛选器:
/github unsubscribe [owner/repo] +label:"new label"
/github unsubscribe [owner/repo] +label:"new label"
这将删除“新标签”筛选器,通道将接收订阅事件的所有通知,而无需任何标签筛选。
查看活动标签筛选器
若要查看通道的当前活动标签筛选器,请使用以下命令:
/github subscribe list features
/github subscribe list features
有效筛选器
Slack 中的 GitHub 应用支持标签筛选器最常见的特殊字符,包括 Slack 和 GitHub 提供的所有表情符号。 很少遇到包含不支持的特殊字符的标签。 例如,未编码为 :foo:任何多字节字符,或者使用该字符的 , 标签可能无法按预期工作。
操作工作流通知
可以使用“工作流”功能,使用格式 /github subscribe owner/repo workflows,从你的频道或个人应用订阅 GitHub Actions 工作流运行通知。
订阅“工作流”时,可以使用以下功能:
-
触发新的工作流运行时,将收到通知。
-
可以在线程中以回复的形式跟踪批准通知,也可以直接从频道/个人应用批准通知。
-
工作流完成后,你将在线程中收到一个更新作为回复,以便你了解有关工作流运行的上下文和历史记录。
-
如果某些作失败,可以选择就地重新运行工作流,还可以根据需要启用调试日志。
注意
2025-03-10(GHES 版本 3.17)之后,将不再收到有关单个工作流作业进度的通知。 有关详细信息,请参阅 GitHub changelog 。
工作流通知筛选器
可以使用以下选项筛选工作流通知:
| 过滤器 | Description |
|---|---|
name | 按工作流的名称进行筛选。 |
actor | 按触发工作流的用户进行筛选。 |
branch | 按运行工作流的分支进行筛选。 在包含pull_request事件的情况下,分支将是创建拉取请求所针对的目标分支。 |
event | 按触发工作流的事件(例如推送、pull_request)进行筛选。 |
可以使用以下格式配置工作流通知筛选器:
/github subscribe owner/repo workflows:{name:"your workflow name" event:"workflow event" branch:"branch name" actor:"username"}
/github subscribe owner/repo workflows:{name:"your workflow name" event:"workflow event" branch:"branch name" actor:"username"}
还可以为每个筛选器传递多个值,用逗号分隔。 例如:
/github subscribe owner/repo workflows:{name:"your workflow name","another workflow name" event:"workflow event","another workflow event" branch:"branch name","another branch name" actor:"username","another-username"}
/github subscribe owner/repo workflows:{name:"your workflow name","another workflow name" event:"workflow event","another workflow event" branch:"branch name","another branch name" actor:"username","another-username"}
默认情况下,当你在不通过任何筛选器的情况下配置工作流通知时,它被配置为通过针对默认分支的拉取请求触发的工作流。 可以传递一个或多个条目。
可以使用以下命令取消订阅工作流通知。 /github unsubscribe owner/repo workflows
注意
若要在 Slack 中接收 GitHub Actions 通知,GitHub 应用需要额外权限。 首次尝试订阅工作流时,系统会提示你授予这些权限。
部署通知
还可以配置单独的部署通知。 这些部署可以从 GitHub Actions 或者通过部署 API 从外部来源进行。 请参阅“适用于部署的 REST API 终结点”。
可以使用以下命令订阅/取消订阅部署通知。 /github subscribe/unsubscribe owner/repo deployments
注意
如果你正在使用 GitHub Actions,并希望跟踪你在环境中的部署,建议使用 workflows 功能,因为它提供了更全面的视图,并且能够直接从 Slack 批准你的部署。