聞こえないJavaエンジニアが適当に書き連ねていく

つらつらとメモしたり日頃の溜まっている想いを吐き出す場所です。

Gitlabの変更内容をSlackに通知する方法

概要

Gitlabで変更があった時(issueを新規起票、issueにコメントがついた、など)にSlackに通知を飛ばすための手順メモ。

検索すると手順が載っているページがいくつかヒットするが、Slack側のUI変更が入っていてちょっと手順が違ったので2020/11/12時点の手順を載せておく。

Slackの設定

まず、Slack側で通知を受け取れるようにするための設定を行う。

SlackAPIにアクセス

Slack API | Slack にアクセスする。

Webhook設定画面を開く

Messaging > Managing messages の下にある、Using Webhooksをクリックする。

f:id:su_zu_ki_1010:20201112154422p:plain

新しくSlackアプリを作成する

Getting started with Incoming Webhooksの下に、Create your Slack appボタンがあるのでクリックする。

f:id:su_zu_ki_1010:20201112154438p:plain

すると、新規アプリの名前を入れる欄と、登録するSlackワークスペースを選択する画面に遷移する。

f:id:su_zu_ki_1010:20201112154451p:plain

実際に通知を飛ばすチャンネルを選択する

Slackアプリの作成ができると、Building Apps for Slack画面に遷移するので、 Incoming Webhooksをクリックする。

f:id:su_zu_ki_1010:20201112154509p:plain

遷移先の画面で、Activate Incoming WebhooksOffになっているのでOnに変更する。

f:id:su_zu_ki_1010:20201112154526p:plain

Onにすると、表示が切り替わるので下にスクロールする。

f:id:su_zu_ki_1010:20201112154542p:plain

Webhook URLs for Your Workspaceの欄があるが、初期状態だとURLが設定されていない。 Add New Webhook to Workspaceボタンをクリックする。

f:id:su_zu_ki_1010:20201112154600p:plain

通知を飛ばすチャンネル選択の画面になるので、通知を飛ばしたいチャンネルを選択する。 Gitlabを頻繁に更新すると、通知がどんどん届くので通知専用のチャンネルを用意するをお勧めする。

f:id:su_zu_ki_1010:20201112154615p:plain

Allowボタンをクリックで、専用のURLが割り振られる。 このURLを後述する、Gitlab側の設定画面に設定することでGitlabで変更があるとSlackに通知が飛ぶようになる。

f:id:su_zu_ki_1010:20201112154629p:plain

Slackに通知が飛ぶことの確認

Sample curl request to post to a channelに記載されているコマンドを実行すると通知が飛ぶテストが出来る。 しかし、ここに記載されているコマンドはLinux用なのでWindows端末で実行しようとしてもエラーになってしまう。

[slack]Incoming WebhooksのSampleをWindowsで実行時"curl: (6) Could not resolve host: application"エラー | akamist blog

に書いてあるように書き換える必要がある。

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をクリックする。

f:id:su_zu_ki_1010:20201112154652p:plain

クリックして遷移した画面に、作成したアプリ一覧が表示されるので、Gitlab通知用のアプリをクリックする。

f:id:su_zu_ki_1010:20201112154706p:plain

遷移した画面では、Featuresの下にある、Incoming Webhooksをクリックする。

f:id:su_zu_ki_1010:20201112154723p:plain

すると、Incoming Webhooks設定画面に遷移するので、下にスクロールするとWebhook用のURLが確認出来る。

Gitlab側の設定

Gitlab側で変更が発生したときに、Slackに通知を飛ばすための設定をする。

Slack通知をする設定画面を開く

Gitlabのプロジェクトページを開き、左側にあるSetting > Integrationsをクリックする。

遷移した画面の下の方にSlack notificationsのリンクがあるので、これをクリックする。

f:id:su_zu_ki_1010:20201112154324p:plain

Slack通知を行う設定をしてテストする

Slack notifications画面に遷移するので、下へスクロールする。

f:id:su_zu_ki_1010:20201112154738p:plain

そうすると、WebhookのURLを入力する欄があるので、先ほどSlackで表示されたURLを貼り付ける。

f:id:su_zu_ki_1010:20201112154751p:plain

Slack API画面のCopyボタンを押すとURLがクリップボードにコピーされるので、これを貼り付ければよい。

f:id:su_zu_ki_1010:20201112154805p:plain

URLを貼り付けたら、Save Changesボタンを押して一度保存したあと、Test settingsボタンを押して通知が飛ぶことを確認する。

正しく設定出来ていれば、設定したSlackのチャンネルに通知が飛ぶ。

以上で設定完了。