Slack 通知(已弃用)
Tier: 基础版,专业版,旗舰版
Offering: JihuLab.com,私有化部署
此功能在极狐GitLab 15.9 中已弃用 并计划在 19.0 中移除。请改用 极狐GitLab for Slack 应用。 此更改是一个重大更改。
Slack 通知集成使你的极狐GitLab 项目能够将事件 (例如议题创建)作为通知发送到你现有的 Slack 团队。设置 Slack 通知需要同时对 Slack 和极狐GitLab 进行配置更改。
配置 Slack
- 登录你的 Slack 团队并启动一个新的 Incoming WebHooks 配置。
- 确定默认应发送通知的 Slack 频道。 选择 添加 Incoming WebHooks 集成 以添加配置。
- 复制 Webhook URL,稍后在配置极狐GitLab 时使用。
配置极狐GitLab
版本历史
- 在极狐GitLab 15.9 中更改,将每个事件的 Slack 频道限制为 10 个。
- 在顶部栏中,选择 搜索或跳转到 并找到你的项目。
- 在左侧边栏中,选择 设置 > 集成。
- 选择 Slack 通知。
- 在 启用集成 下,选中 活跃 复选框。
- 在 触发器 部分,选中每种要作为通知发送到 Slack 的极狐GitLab 事件类型的复选框。有关完整列表,请参阅 Slack 通知的触发器。 默认情况下,消息将发送到你在 Slack 配置期间配置的频道。
- 可选。要将消息发送到不同的频道、多个频道或作为
私信:
- 要将消息发送到频道, 输入 Slack 频道名称,用逗号分隔。
- 要发送私信, 使用在用户的 Slack 个人资料中找到的成员 ID。
- 在 Webhook 中,输入你在 Slack 配置步骤中复制的 webhook URL。
- 可选。在 用户名 中,输入发送通知的 Slack 机器人的用户名。
- 选中 仅通知失败的流水线 复选框,以仅在失败时通知。
- 选中 仅当状态更改时通知 复选框,以仅在引用的流水线状态更改时发送通知。
- 在 要发送通知的分支 下拉列表中,选择要为其发送通知的分支类型。
- 将 要通知的标签 字段留空以获取所有通知,或 添加议题或合并请求必须具有的标签以触发 通知。
- 可选。选择 测试设置。
- 选择 保存更改。
你的 Slack 团队现在开始按配置接收极狐GitLab 事件通知。
Slack 通知的触发器
以下触发器可用于 Slack 通知:
为群组提及触发通知
要触发群组提及的通知事件,请在以下位置使用 @<group_name>:
- 议题和合并请求描述
- 议题、合并请求和提交的评论
仅当所有直接群组成员都有权查看提及所在的资源 (例如合并请求)时,才会触发通知。每个事件最多只会向 3 个群组发送通知。
故障排除
如果你的 Slack 集成不工作,请通过 搜索 Sidekiq 日志 中与你的 Slack 服务相关的错误来开始故障排除。
错误:Something went wrong on our end
你可能会在极狐GitLab UI 中收到此通用错误消息。 查看日志以查找 错误消息并继续从那里进行故障排除。
错误:certificate verify failed
你可能会在 Sidekiq 日志中看到类似以下的条目:
plaintext2019-01-10_13:22:08.42572 2019-01-10T13:22:08.425Z 6877 TID-abcdefg Integrations::ExecuteWorker JID-3bade5fb3dd47a85db6d78c5 ERROR: {:class=>"Integrations::ExecuteWorker :integration_class=>"SlackService", :message=>"SSL_connect returned=1 errno=0 state=error: certificate verify failed"}
当极狐GitLab 与 Slack 通信或极狐GitLab 与自身通信出现问题时,会发生此问题。 前者不太可能,因为 Slack 安全证书应始终受信任。
要查看这些问题是哪一个导致了问题:
-
启动 Rails 控制台:
shellsudo gitlab-rails console -e production # 对于源代码安装: bundle exec rails console -e production -
运行以下命令:
ruby# 将 <SLACK URL> 替换为你的实际 Slack URL result = Net::HTTP.get(URI('https://<SLACK URL>'));0 # 将 <GITLAB URL> 替换为你的实际极狐GitLab URL result = Net::HTTP.get(URI('https://<GITLAB URL>'));0
如果极狐GitLab 不信任到自身的 HTTPS 连接, 将你的证书添加到极狐GitLab 受信任的证书。
如果极狐GitLab 不信任到 Slack 的连接, 则极狐GitLab OpenSSL 信任存储区不正确。典型原因包括:
- 使用 gitlab_rails['env'] = {"SSL_CERT_FILE" => "/path/to/file.pem"} 覆盖信任存储区。
- 意外修改了默认 CA 包 /opt/gitlab/embedded/ssl/certs/cacert.pem。
批量更新以禁用 Slack 通知集成
要禁用所有启用了 Slack 集成的项目的通知, 启动 Rails 控制台会话并使用类似以下脚本:
更改数据的命令如果未正确运行或在适当条件下运行,可能会导致损坏。始终先在测试环境中运行命令,并准备好备份实例以便恢复。
ruby1# 获取所有启用了 Slack 通知的项目 2p = Project.find_by_sql("SELECT p.id FROM projects p LEFT JOIN integrations s ON p.id = s.project_id WHERE s.type_new = 'Integrations::Slack' AND s.active = true") 3 4# 在找到的每个项目上禁用集成。 5p.each do |project| 6 project.slack_integration.update!(:active, false) 7end