SlackにGitHub Enterpriseから通知を飛ばす方法

ふだん社内のコミュニケーションはSlackを使っていて、社内の開発はGitHub Enterprise上で行っています。

普通のGitHubとは連携方法が違うみたいなので、（ググるとやり方のページいっぱい出てくるんですけど）
自分の環境で手順をまとめました。

この手順で、リポジトリごとに好きなチャンネルに通知を飛ばすことができます。

公式でも
> * Slack 用 GitHub アプリ : GitHub の Developer、Team または Business プランを利用していますか？そんな方にはこのアプリがおすすめです！
> * Github Notifications (レガシー): このアプリは GitHub Enterprise と互換性があります。

> https://slack.com/intl/ja-jp/help/articles/232289568-github-for-slack

となっており、Enterprise環境の場合は `Github Notifications (レガシー)` が必要になります。

# GitHubアプリのインストール

Slackの [GitHubアプリ https://slack.com/apps/A0F7YS2SX-github](https://slack.com/apps/A0F7YS2SX-github) に行きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/03e270d9-7957-5871-1556-230c1084031d.png)

`GitHub Enterprise Server` とあります。アプリ名変わったんでしょうか。レガシーだと印象悪いもんね。

初めて導入するときは「インストール」というボタン名になっているみたいです。
私の環境ではすでに連携したことがあるので、左側の「Slackに追加」ボタンをクリックします。

# Slack-投稿チャンネルの選択

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/bb3e5621-c652-b392-72a1-c9ee5a090259.png)

まず、どの `Slackチャンネル` にGitHubの通知を飛ばすかを選びます。ちなみにDMにも送れます。あとから通知先のチャンネルを変更することも可能です。
ここで新しいチャンネルを作ってもいいです。

選んだら「GitHubインテグレーションを追加する」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/ece711be-bef2-579c-78dc-6d97de965a9e.png)

新しい連携が追加されました！

指定したSlackチャンネルにも連携された通知が来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/5f846687-ccf8-cb52-a1f3-0bad83d6f5a8.png)

ここから先は、親切にキャプチャつきの説明が始まるので迷うことは少ないかと思います。

# GitHub-Settings

Slackのページはまだ閉じないでください。
GitHub（Enterprise）上の、通知を飛ばしたいリポジトリページを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/a5ff9ac0-2074-3664-8a9a-c2bac495b70d.png)


ナビゲーションメニュー（`<>Code`とか`Pull requests`とかが並んでいる場所）の右端に`Settings`があれば、それをクリックします。

ちなみにSettingsが見当たらなければ、操作する権限がないのでこの先の設定ができません。管理者に権限付与してもらうか、設定の対応をしてもらってください。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/0960b98f-e102-897b-08ff-907afa738b6e.png)

`Settings` -> `Hooks` -> `Add webhook` の順にクリックします。

## Add webhook 設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/e25c96d3-e0e8-4a73-7a68-f5434621c650.png)
（最初に表示したときには `SSL 〜` は表示されてないかもしれません。下記URLを貼り付けると現れます）

### Payload URL

さきほど開いていたSlack側のページを確認します。「Step3」に記載の `ペイロードURL`、またはその少し下にある `Webhook URL` をコピーして（どちらも同一のもの）、GitHubの `Payload URL` 欄に貼り付けます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/01d4387e-6022-f9a0-78c7-0e839d82be28.png)

### Content type
コンテンツタイプは `application/json` を選択します。

### SSL verification
`Enable SSL verification` が選択されていること（またはSSLが無効になっていないこと）を確認します。

### Which events would you like to trigger this webhook?
通知をトリガーするイベントを選択できます。

* Just the push event.
* Send me everything.
* Let me select individual events.

ひとまず一番上を選んで、後から好みでカスタマイズするといいと思います。弊社ではだいたいこんな設定にしているので、参考まで；

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/b6852760-0b8e-a845-22eb-3aea0bc3d044.png)

準備ができたら `Update webhook` をクリックします。

# Slack-その他の設定
Slackの設定画面に戻ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/242277/2a064126-2192-8db9-fcc0-8c04135bef1a.png)

記載のとおりです。最初に設定した通知先チャンネルの変更や、通知のスタイル（名前やアイコン）などもここでカスタマイズできます。

よければ「インテグレーションの保存」をクリック！これで設定は完了です。

GitHubを編集して、Slackに通知が来ることを確認してください。


それでは良いエンジニアHackを！