Slack Notifications Service

原文:https://docs.gitlab.com/ee/user/project/integrations/slack.html

Slack Notifications Service

Slack Notifications Service 允许您的 GitLab 项目将事件(例如问题创建)作为通知发送到您现有的 Slack 团队. 设置 Slack 通知需要同时更改 Slack 和 GitLab 的配置.

注意:您还可以使用 Slack 斜杠命令在 Slack 中控制 GitLab. 这是单独配置的Slack 斜杠命令 .

Slack configuration

  1. 登录到 Slack 团队并开始新的 Incoming WebHooks 配置 .
  2. 选择默认情况下将通知发送到的松弛通道. 单击添加传入的 WebHooks 集成按钮以添加配置.
  3. 复制Webhook URL ,我们将在以后的 GitLab 配置中使用它.

GitLab configuration

  1. Open your project’s page, and navigate to your project’s Integrations page at 设置>集成.
  2. 选择Slack Notifications集成进行配置.
  3. Click 启用整合.
  4. Trigger 中 ,选中每种类型的 GitLab 事件的复选框,以将其发送给 Slack 作为通知. 有关完整列表,请参阅可用于 Slack 通知的触发器 . 默认情况下,消息将发送到您在Slack 集成期间配置的通道.
  5. (可选)要将消息发送到其他渠道,多个渠道或作为直接消息:
    • 要将消息发送到频道,请输入 Slack 频道名称,以逗号分隔.
    • 要发送直接消息,请使用在用户的 Slack 个人资料中找到的会员 ID.注意:不支持用户名和私人频道.
  6. Webhook 中 ,提供您从Slack 集成步骤复制的Webhook URL.
  7. (可选)在Username 中 ,提供发送通知的 Slack 机器人的用户名.
  8. 选择仅通知断开的管道复选框以仅通知失败.
  9. 要通知分支中选择框,选择要为其发送通知的分支类型.
  10. Click 测试设置并保存更改.

您的 Slack 团队现在将开始按照配置接收 GitLab 事件通知.

Triggers available for Slack notifications

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

  • 推送 :由推送到存储库触发.
  • 问题 :在创建,更新或关闭问题时触发.
  • 机密问题 :创建,更新或关闭机密问题时触发.
  • 合并请求 :在创建,更新或合并合并请求时触发.
  • 注意 :有人添加评论时触发.
  • 机密注释 :当有人添加机密注释时触发.
  • 标签推送 :将新标签推送到存储库时触发.
  • 管道 :管道状态更改时触发.
  • Wiki 页面 :在创建或更新 Wiki 页面时触发.
  • 部署 :在部署完成时触发.
  • 警报 :记录新的唯一警报时触发.

Troubleshooting

如果您的 Slack 集成无法正常工作,请通过在Sidekiq 日志中搜索与 Slack 服务相关的错误来开始故障排除.

Something went wrong on our end

这是 GitLab UI 中显示的一般错误,其本身并没有多大意义. 查看日志以查找错误消息,并从那里继续进行故障排除.

certificate verify failed

您可能会在 Sidekiq 日志中看到类似于以下内容的条目:

  1. 2019-01-10_13:22:08.42572 2019-01-10T13:22:08.425Z 6877 TID-abcdefg ProjectServiceWorker JID-3bade5fb3dd47a85db6d78c5 ERROR: {:class=>"ProjectServiceWorker", :service_class=>"SlackService", :message=>"SSL_connect returned=1 errno=0 state=error: certificate verify failed"}

GitLab 与 Slack 通信或 GitLab 与自身通信可能是一个问题. 前者的可能性较小,因为 Slack 的安全证书希望始终受到信任. 我们可以使用下面的 rails 控制台脚本来确定要处理的内容.

  1. # start a rails console:
  2. sudo gitlab-rails console -e production
  3. # or for source installs:
  4. bundle exec rails console -e production
  1. # run this in the Rails console
  2. # replace <SLACK URL> with your actual Slack URL
  3. result = Net::HTTP.get(URI('https://<SLACK URL>'));0
  4. # replace <GITLAB URL> with your actual GitLab URL
  5. 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 .