🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Slack Notifications Service > 原文:[https://docs.gitlab.com/ee/user/project/integrations/slack.html](https://docs.gitlab.com/ee/user/project/integrations/slack.html) * [Slack configuration](#slack-configuration) * [GitLab configuration](#gitlab-configuration) * [Triggers available for Slack notifications](#triggers-available-for-slack-notifications) * [Troubleshooting](#troubleshooting) * [Something went wrong on our end](#something-went-wrong-on-our-end) * [`certificate verify failed`](#certificate-verify-failed) # Slack Notifications Service[](#slack-notifications-service "Permalink") Slack Notifications Service 允许您的 GitLab 项目将事件(例如问题创建)作为通知发送到您现有的 Slack 团队. 设置 Slack 通知需要同时更改 Slack 和 GitLab 的配置. **注意:**您还可以使用 Slack 斜杠命令在 Slack 中控制 GitLab. 这是单独配置的[Slack 斜杠命令](slack_slash_commands.html) . ## Slack configuration[](#slack-configuration "Permalink") 1. 登录到 Slack 团队并[开始新的 Incoming WebHooks 配置](https://my.slack.com/services/new/incoming-webhook) . 2. 选择默认情况下将通知发送到的松弛通道. 单击**添加传入的 WebHooks 集成**按钮以添加配置. 3. 复制**Webhook URL** ,我们将在以后的 GitLab 配置中使用它. ## GitLab configuration[](#gitlab-configuration "Permalink") 1. Open your project’s page, and navigate to your project’s [Integrations page](overview.html#accessing-integrations) at **设置>集成**. 2. 选择**Slack Notifications**集成进行配置. 3. Click **启用整合**. 4. 在**Trigger 中** ,选中每种类型的 GitLab 事件的复选框,以将其发送给 Slack 作为通知. 有关完整列表,请参阅[可用于 Slack 通知的触发器](#triggers-available-for-slack-notifications) . 默认情况下,消息将发送到您在[Slack 集成](#slack-configuration)期间配置的通道. 5. (可选)要将消息发送到其他渠道,多个渠道或作为直接消息: * 要将消息发送到频道,请输入 Slack 频道名称,以逗号分隔. * 要发送直接消息,请使用在用户的 Slack 个人资料中找到的会员 ID.**注意:**不支持用户名和私人频道. 6. 在**Webhook 中** ,提供您从[Slack 集成](#slack-configuration)步骤复制的**Webhook** URL. 7. (可选)在**Username 中** ,提供发送通知的 Slack 机器人的用户名. 8. 选择**仅通知断开的管道**复选框以仅通知失败. 9. 在**要通知**的**分支中**选择框,选择要为其发送通知的分支类型. 10. Click **测试设置并保存更改**. 您的 Slack 团队现在将开始按照配置接收 GitLab 事件通知. ### Triggers available for Slack notifications[](#triggers-available-for-slack-notifications "Permalink") 以下触发器可用于 Slack 通知: * **推送** :由推送到存储库触发. * **问题** :在创建,更新或关闭问题时触发. * **机密问题** :创建,更新或关闭机密问题时触发. * **合并请求** :在创建,更新或合并合并请求时触发. * **注意** :有人添加评论时触发. * **机密注释** :当有人添加机密注释时触发. * **标签推送** :将新标签推送到存储库时触发. * **管道** :管道状态更改时触发. * **Wiki 页面** :在创建或更新 Wiki 页面时触发. * **部署** :在部署完成时触发. * **警报** :记录新的唯一警报时触发. ## Troubleshooting[](#troubleshooting "Permalink") 如果您的 Slack 集成无法正常工作,请通过在[Sidekiq 日志中](../../../administration/logs.html#sidekiqlog)搜索与 Slack 服务相关的错误来开始故障排除. ### Something went wrong on our end[](#something-went-wrong-on-our-end "Permalink") 这是 GitLab UI 中显示的一般错误,其本身并没有多大意义. 查看[日志](../../../administration/logs.html#productionlog)以查找错误消息,并从那里继续进行故障排除. ### `certificate verify failed`[](#certificate-verify-failed "Permalink") 您可能会在 Sidekiq 日志中看到类似于以下内容的条目: ``` 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 控制台脚本来确定要处理的内容. ``` # start a rails console: sudo gitlab-rails console -e production # or for source installs: bundle exec rails console -e production ``` ``` # run this in the Rails console # replace <SLACK URL> with your actual Slack URL result = Net::HTTP.get(URI('https://<SLACK URL>'));0 # replace <GITLAB URL> with your actual GitLab URL result = Net::HTTP.get(URI('https://<GITLAB URL>'));0 ``` 如果 GitLab 不信任自身的 HTTPS 连接,则可能需要[将证书添加到 GitLab 的受信任证书中](https://docs.gitlab.com/omnibus/settings/ssl.html) . 如果 GitLab 不信任与 Slack 的连接,则 GitLab OpenSSL 信任存储不正确. 一些典型的原因:使用`gitlab_rails['env'] = {"SSL_CERT_FILE" => "/path/to/file.pem"}`覆盖信任库,或不小心修改了默认的 CA 捆绑包`/opt/gitlab/embedded/ssl/certs/cacert.pem` .