极狐 GitLab

Slack 通知(已弃用)

Tier: 基础版,专业版,旗舰版

Offering: JihuLab.com,私有化部署

此功能在极狐GitLab 15.9 中已弃用 并计划在 19.0 中移除。请改用 极狐GitLab for Slack 应用。 此更改是一个重大更改。

Slack 通知集成使你的极狐GitLab 项目能够将事件 (例如议题创建)作为通知发送到你现有的 Slack 团队。设置 Slack 通知需要同时对 Slack 和极狐GitLab 进行配置更改。

配置 Slack#

  1. 登录你的 Slack 团队并启动一个新的 Incoming WebHooks 配置
  2. 确定默认应发送通知的 Slack 频道。 选择 添加 Incoming WebHooks 集成 以添加配置。
  3. 复制 Webhook URL,稍后在配置极狐GitLab 时使用。

配置极狐GitLab#

版本历史
  • 在极狐GitLab 15.9 中更改,将每个事件的 Slack 频道限制为 10 个。
  1. 在顶部栏中,选择 搜索或跳转到 并找到你的项目。
  2. 在左侧边栏中,选择 设置 > 集成
  3. 选择 Slack 通知
  4. 启用集成 下,选中 活跃 复选框。
  5. 触发器 部分,选中每种要作为通知发送到 Slack 的极狐GitLab 事件类型的复选框。有关完整列表,请参阅 Slack 通知的触发器。 默认情况下,消息将发送到你在 Slack 配置期间配置的频道。
  6. 可选。要将消息发送到不同的频道、多个频道或作为 私信:
    • 要将消息发送到频道, 输入 Slack 频道名称,用逗号分隔。
    • 要发送私信, 使用在用户的 Slack 个人资料中找到的成员 ID。
  7. Webhook 中,输入你在 Slack 配置步骤中复制的 webhook URL。
  8. 可选。在 用户名 中,输入发送通知的 Slack 机器人的用户名。
  9. 选中 仅通知失败的流水线 复选框,以仅在失败时通知。
  10. 选中 仅当状态更改时通知 复选框,以仅在引用的流水线状态更改时发送通知。
  11. 要发送通知的分支 下拉列表中,选择要为其发送通知的分支类型。
  12. 要通知的标签 字段留空以获取所有通知,或 添加议题或合并请求必须具有的标签以触发 通知。
  13. 可选。选择 测试设置
  14. 选择 保存更改

你的 Slack 团队现在开始按配置接收极狐GitLab 事件通知。

Slack 通知的触发器#

以下触发器可用于 Slack 通知:

触发器名称触发事件
推送对仓库的推送。
议题工作项被创建、关闭或重新打开。
事件事件被创建、关闭或重新打开。
机密议题机密工作项被创建、关闭或重新打开。
合并请求合并请求被创建、合并、批准、关闭或重新打开。
评论添加了评论。
机密评论在机密工作项上添加了内部备注或评论。
标签推送新标签被推送到仓库或移除。
流水线流水线状态更改。
Wiki 页面Wiki 页面被创建或更新。
部署部署开始或完成。
警报记录了一个新的、唯一的警报。
公开中的群组提及在公开上下文中提及了群组。
私有中的群组提及在机密上下文中提及了群组。
漏洞记录了一个新的、唯一的漏洞。

为群组提及触发通知#

版本历史
  • 在极狐GitLab 16.4 中引入
  • 在极狐GitLab 18.3 中引入了通知触发器的限制,带有功能标志名为 group_mention_access_check。默认禁用。

要触发群组提及的通知事件,请在以下位置使用 @<group_name>

  • 议题和合并请求描述
  • 议题、合并请求和提交的评论

仅当所有直接群组成员都有权查看提及所在的资源 (例如合并请求)时,才会触发通知。每个事件最多只会向 3 个群组发送通知。

故障排除#

如果你的 Slack 集成不工作,请通过 搜索 Sidekiq 日志 中与你的 Slack 服务相关的错误来开始故障排除。

错误:Something went wrong on our end#

你可能会在极狐GitLab UI 中收到此通用错误消息。 查看日志以查找 错误消息并继续从那里进行故障排除。

错误:certificate verify failed#

你可能会在 Sidekiq 日志中看到类似以下的条目:

plaintext
2019-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 安全证书应始终受信任。

要查看这些问题是哪一个导致了问题:

  1. 启动 Rails 控制台:

    shell
    sudo gitlab-rails console -e production # 对于源代码安装: bundle exec rails console -e production
  2. 运行以下命令:

    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 控制台会话并使用类似以下脚本:

更改数据的命令如果未正确运行或在适当条件下运行,可能会导致损坏。始终先在测试环境中运行命令,并准备好备份实例以便恢复。

ruby
1# 获取所有启用了 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