【経緯】
GitLabでファイルコミットした時に一々Slackでメッセージ入力して送信するのがめんどい。
調べたらGitLabとSlackの機能で簡単に対応出来そうだったので、やってみました。
自分の手順ではアプリを作成してますが、単純に特定のチャンネルに通知を飛ばしたいだけならアプリを作成する必要はなさそうです。
(参考にさせて頂いた方達のように、Incoming WebHooksを使用すればもっと簡単に通知出来そう)
ただし自分の場合は同じアプリを使用して、別々のWebhook URLを作成して、別々のSlackのチャンネルに通知を飛ばしたかったのでアプリ自作することで実現しています。
個人で使っているGitLabのバージョンは8.9.6です。
【Slack APIの設定】
- Slack APIにアクセス
- 「Incoming webhooks」のリンクを押下して、「Create your Slack app」を押下
- 下記の画面で作成するアプリの名前、Webhooksを利用したいワークスペースを選択して「Create App」を押下
- 「Basic Information」の「Display Information」でアプリ名、アプリの説明、アプリアイコン、背景色が設定できるので任意で変更
- 「Incoming Webhooks」を「On」にして、「Add New Webhook to WorkSpace」を押下
- 連携したいワークスペース、投稿先のチャンネルを確認してOKなら「許可する」を押下
- 「Webhook URL」の一覧に指定したWebhook URLが作成されていることを確認
【GitLabの設定】
- リポジトリの画面右にある歯車マークから「Service」を選択
- サービスの一覧から「Slack」を選択
- 任意のイベントを設定して「Active」にチェックを入れる
- 「Webhook」の入力欄にSlack APIの設定で作成したWebhook URLを入力
- 「Save Changes」を押下して設定を保存
- 保存完了すると出てくる「Test settings」を押下してメッセージが飛んでくれば成功
【課題点】
当然なんですが「Push events」をフックしているので、ローカルリポジトリだろうとmasterだろうと関係なく通知が飛んできます。
頻度が少ないリポジトリや人数が少ないリポジトリなら問題ないと思いますが、大人数だったり頻繁に更新あったりするリポジトリには向かなそうです。
また、Slackの無料ユーザーだとワークスペースに追加できるアプリが10個までのようなので、他の人と今共有のワークスペースだったりアプリ数上限にひっかかっている(もしくはひっかかりそうな)ワークスペースには苦しいかも。
Git hookとIncoming Webhooksを使えば何とかなる要件だと思うので、アプリ数を圧迫したくない場合はそちらで対応。
【参考】
・https://qiita.com/M4e/items/c26d938e73830b0ba6b9
・https://qiita.com/txmy/items/975ef6e05842970fada0
・https://qiita.com/yuukiw00w/items/94e4495fc593cfbda45c