Gitlabの変更内容をSlackに通知する方法
概要
Gitlabで変更があった時(issueを新規起票、issueにコメントがついた、など)にSlackに通知を飛ばすための手順メモ。
検索すると手順が載っているページがいくつかヒットするが、Slack側のUI変更が入っていてちょっと手順が違ったので2020/11/12時点の手順を載せておく。
Slackの設定
まず、Slack側で通知を受け取れるようにするための設定を行う。
SlackAPIにアクセス
Slack API | Slack にアクセスする。
Webhook設定画面を開く
Messaging > Managing messages の下にある、Using Webhooksをクリックする。
新しくSlackアプリを作成する
Getting started with Incoming Webhooksの下に、Create your Slack appボタンがあるのでクリックする。
すると、新規アプリの名前を入れる欄と、登録するSlackワークスペースを選択する画面に遷移する。
実際に通知を飛ばすチャンネルを選択する
Slackアプリの作成ができると、Building Apps for Slack画面に遷移するので、 Incoming Webhooksをクリックする。
遷移先の画面で、Activate Incoming WebhooksがOffになっているのでOnに変更する。
Onにすると、表示が切り替わるので下にスクロールする。
Webhook URLs for Your Workspaceの欄があるが、初期状態だとURLが設定されていない。 Add New Webhook to Workspaceボタンをクリックする。
通知を飛ばすチャンネル選択の画面になるので、通知を飛ばしたいチャンネルを選択する。 Gitlabを頻繁に更新すると、通知がどんどん届くので通知専用のチャンネルを用意するをお勧めする。
Allowボタンをクリックで、専用のURLが割り振られる。 このURLを後述する、Gitlab側の設定画面に設定することでGitlabで変更があるとSlackに通知が飛ぶようになる。
Slackに通知が飛ぶことの確認
Sample curl request to post to a channelに記載されているコマンドを実行すると通知が飛ぶテストが出来る。 しかし、ここに記載されているコマンドはLinux用なのでWindows端末で実行しようとしてもエラーになってしまう。
に書いてあるように書き換える必要がある。
curl -X POST -H "Content-type: application/json" --data "{\"text\":\"Hello, World!\"}" https://hooks.slack.com/services/XXXXXXXXX/XXXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxx
- スペースを含むパラメータはダブルクォート「"」でくくる。
- ダブルクォートの中にあるダブルクォートは、バックスラッシュ・円記号「\」でエスケープする
以上でSlack側の設定は完了。次はGitlab側を設定する。
Webhook URLに表示されている値はGitlab側の設定で使うので、このページは閉じないでおくのを推奨する。
誤って閉じてしまった時は、Slack API | Slack にアクセスして、右上にあるYour Appsをクリックする。
クリックして遷移した画面に、作成したアプリ一覧が表示されるので、Gitlab通知用のアプリをクリックする。
遷移した画面では、Featuresの下にある、Incoming Webhooksをクリックする。
すると、Incoming Webhooks設定画面に遷移するので、下にスクロールするとWebhook用のURLが確認出来る。
Gitlab側の設定
Gitlab側で変更が発生したときに、Slackに通知を飛ばすための設定をする。
Slack通知をする設定画面を開く
Gitlabのプロジェクトページを開き、左側にあるSetting > Integrationsをクリックする。
遷移した画面の下の方にSlack notificationsのリンクがあるので、これをクリックする。
Slack通知を行う設定をしてテストする
Slack notifications画面に遷移するので、下へスクロールする。
そうすると、WebhookのURLを入力する欄があるので、先ほどSlackで表示されたURLを貼り付ける。
Slack API画面のCopyボタンを押すとURLがクリップボードにコピーされるので、これを貼り付ければよい。
URLを貼り付けたら、Save Changesボタンを押して一度保存したあと、Test settingsボタンを押して通知が飛ぶことを確認する。
正しく設定出来ていれば、設定したSlackのチャンネルに通知が飛ぶ。
以上で設定完了。