debian-mirror-gitlab/doc/user/project/integrations/slack.md

126 lines
5.8 KiB
Markdown
Raw Normal View History

2020-10-24 23:57:45 +05:30
---
2021-10-27 15:23:28 +05:30
stage: Ecosystem
group: Integrations
2021-02-22 17:27:13 +05:30
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
2020-10-24 23:57:45 +05:30
---
2021-10-27 15:23:28 +05:30
# Slack notifications service **(FREE)**
2017-08-17 22:00:37 +05:30
2021-10-27 15:23:28 +05:30
The Slack notifications service enables your GitLab project to send events
2020-07-28 23:09:34 +05:30
(such as issue creation) to your existing Slack team as notifications. Setting up
Slack notifications requires configuration changes for both Slack and GitLab.
2017-08-17 22:00:37 +05:30
2020-07-28 23:09:34 +05:30
You can also use Slack slash commands to control GitLab inside Slack. This is the
separately configured [Slack slash commands](slack_slash_commands.md).
2017-08-17 22:00:37 +05:30
2020-07-28 23:09:34 +05:30
## Slack configuration
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
1. Sign in to your Slack team and [start a new Incoming WebHooks configuration](https://my.slack.com/services/new/incoming-webhook).
2021-10-27 15:23:28 +05:30
1. Identify the Slack channel where notifications should be sent to by default.
Select **Add Incoming WebHooks integration** to add the configuration.
1. Copy the **Webhook URL**, which is used later in the GitLab configuration.
2017-08-17 22:00:37 +05:30
2020-07-28 23:09:34 +05:30
## GitLab configuration
2017-08-17 22:00:37 +05:30
2021-10-27 15:23:28 +05:30
1. On the top bar, select **Menu > Projects** and find your project.
1. On the left sidebar, select **Settings > Integrations**.
2020-04-22 19:07:51 +05:30
1. Select the **Slack notifications** integration to configure it.
2021-10-27 15:23:28 +05:30
1. In the **Enable integration** section, select the **Active** checkbox.
1. In the **Trigger** section, select the checkboxes for each type of GitLab
event to send to Slack as a notification. For a full list, see
[Triggers available for Slack notifications](#triggers-available-for-slack-notifications).
By default, messages are sent to the channel you configured during
2020-07-28 23:09:34 +05:30
[Slack integration](#slack-configuration).
2021-10-27 15:23:28 +05:30
1. (Optional) To send messages to a different channel, multiple channels, or as
a direct message:
- *To send messages to channels,* enter the Slack channel names, separated by
commas.
- *To send direct messages,* use the Member ID found in the user's Slack profile.
2020-07-28 23:09:34 +05:30
2021-02-22 17:27:13 +05:30
NOTE:
2020-07-28 23:09:34 +05:30
Usernames and private channels are not supported.
2021-10-27 15:23:28 +05:30
1. In **Webhook**, enter the webhook URL you copied from the previous
2020-07-28 23:09:34 +05:30
[Slack integration](#slack-configuration) step.
2021-10-27 15:23:28 +05:30
1. (Optional) In **Username**, enter the username of the Slack bot that sends
the notifications.
1. Select the **Notify only broken pipelines** checkbox to notify only on failures.
1. In the **Branches to be notified** dropdown, select which types of branches
2020-07-28 23:09:34 +05:30
to send notifications for.
2021-10-27 15:23:28 +05:30
1. Leave the **Labels to be notified** field blank to get all notifications or
add labels that the issue or merge request must have in order to trigger a
notification.
1. Select **Test settings** to verify your information, and then select
**Save changes**.
2017-08-17 22:00:37 +05:30
2021-02-22 17:27:13 +05:30
Your Slack team now starts receiving GitLab event notifications as configured.
2017-08-17 22:00:37 +05:30
2020-06-23 00:09:42 +05:30
### Triggers available for Slack notifications
The following triggers are available for Slack notifications:
2021-10-27 15:23:28 +05:30
| Trigger | Description |
|------------------------|-------------|
| **Push** | Triggered by a push to the repository. |
| **Issue** | Triggered when an issue is created, updated, or closed. |
| **Confidential issue** | Triggered when a confidential issue is created, updated, or closed. |
| **Merge request** | Triggered when a merge request is created, updated, or merged. |
| **Note** | Triggered when someone adds a comment. |
| **Confidential note** | Triggered when someone adds a confidential note. |
| **Tag push** | Triggered when a new tag is pushed to the repository. |
| **Pipeline** | Triggered when a pipeline status changes. |
| **Wiki page** | Triggered when a wiki page is created or updated. |
| **Deployment** | Triggered when a deployment starts or finishes. |
| **Alert** | Triggered when a new, unique alert is recorded. |
2019-03-02 22:35:43 +05:30
## Troubleshooting
2020-07-28 23:09:34 +05:30
If your Slack integration is not working, start troubleshooting by
2019-03-02 22:35:43 +05:30
searching through the [Sidekiq logs](../../../administration/logs.md#sidekiqlog)
for errors relating to your Slack service.
### Something went wrong on our end
2020-07-28 23:09:34 +05:30
This is a generic error shown in the GitLab UI and does not mean much by itself.
Review [the logs](../../../administration/logs.md#productionlog) to find
2019-03-02 22:35:43 +05:30
an error message and keep troubleshooting from there.
### `certificate verify failed`
You may see an entry similar to the following in your Sidekiq log:
2020-05-24 23:13:21 +05:30
```plaintext
2019-03-02 22:35:43 +05:30
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"}
```
This is probably a problem either with GitLab communicating with Slack, or GitLab
2021-10-27 15:23:28 +05:30
communicating with itself. The former is less likely, as Slack's security certificates
2019-03-02 22:35:43 +05:30
should _hopefully_ always be trusted. We can establish which we're dealing with by using
the below rails console script.
2020-03-13 15:44:24 +05:30
```shell
2019-03-02 22:35:43 +05:30
# start a rails console:
2020-04-08 14:13:33 +05:30
sudo gitlab-rails console -e production
2019-03-02 22:35:43 +05:30
# or for source installs:
2020-04-08 14:13:33 +05:30
bundle exec rails console -e production
2019-03-02 22:35:43 +05:30
```
```ruby
# 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
```
2020-07-28 23:09:34 +05:30
If GitLab is not trusting HTTPS connections to itself, then you may
2021-02-22 17:27:13 +05:30
need to [add your certificate to the GitLab trusted certificates](https://docs.gitlab.com/omnibus/settings/ssl.html#install-custom-public-certificates).
2019-03-02 22:35:43 +05:30
2020-07-28 23:09:34 +05:30
If GitLab is not trusting connections to Slack, then the GitLab
2021-10-27 15:23:28 +05:30
OpenSSL trust store is incorrect. Some typical causes:
- Overriding the trust store with `gitlab_rails['env'] = {"SSL_CERT_FILE" => "/path/to/file.pem"}`.
- Accidentally modifying the default CA bundle `/opt/gitlab/embedded/ssl/certs/cacert.pem`.