SlackとGitHubを連携してissueコメントやプルリク通知をチャンネルに流す方法（2020年版）

以前書いた[SlackとGitHub連携記事](https://qiita.com/unsoluble_sugar/items/072c9740e258ee93ff9a)の情報が古くなっており、設定方法も色々と変わっていたため、2020年2月時点での手順をまとめておきます。

:::note warn
本記事の更新は停止しているため、最新版はZennの記事をご参照ください。
:::

https://zenn.dev/unsoluble_sugar/articles/298c9728e01819db9f50

# SlackにGitHubアプリをインストールする

Slackの[App Directory](https://slack.com/apps)で「GitHub」を検索、もしくは[slack.github.com](https://slack.github.com/)にアクセスし「Add to Slack」をクリックします。
<img width="1037" alt="スクリーンショット 2020-02-24 20.07.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6380/687e37e0-8b57-9b44-26d6-a0c5ba3b399e.png">

対象ワークスペースにGitHubアプリをインストールします。

通知を使用するチャンネルを選んで「Install」をクリック。実際のチャンネル紐付けは後述の手順で行うため、ここでは「All Public Channels」を選択しておくのが無難です。

<img width="490" alt="スクリーンショット_2020-02-24_20_08_26.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6380/12964f6b-304a-bc03-bc0f-f9e52eae9e00.jpeg">

ワークスペースにGitHubアプリが追加されます。
<img width="913" alt="スクリーンショット 2020-02-24 20.08.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6380/0bc522e2-b7ee-4f39-33a3-d9cc8796c660.png">


# GitHubアカウントとの接続を行う

続いてGitHubアカウントとの接続を行います。以下コマンドでサインインのワークフローを呼び出します。

```
/github signin
```

「Connect GitHub account」をクリック。

<img width="376" alt="スクリーンショット 2020-02-24 20.11.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6380/40292912-2d34-f6b3-a2b8-9f384099d5f8.png">

Web画面が開くので、対象ワークスペースを確認し「Connect GitHub account」をクリック。
<img width="582" alt="スクリーンショット_2020-02-24_20_11_37.jpg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6380/7e0dc57c-1633-0832-94a1-8ba717ab3999.jpeg">


これでGitHubアカウントとSlackワークスペースの接続連携が完了です。

<img width="468" alt="スクリーンショット 2020-02-24 20.11.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6380/52e862d2-2291-964b-5180-64d6e54b0aeb.png">


# リポジトリの購読を開始する

GitHubリポジトリの通知を流したいチャンネルに移動し、以下コマンドを叩きます。

```
/github subscribe owner/repo
```

- `owner`：オーナー名
- `repo`：リポジトリ名

これで購読開始となります。

<img width="372" alt="スクリーンショット 2020-02-24 20.18.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6380/8962d89b-11ae-e613-d951-4ddc78a66777.png">

簡単ですね。

# 通知をカスタマイズする

デフォルトで通知される機能は以下のとおり。

- issues (イシュー)
- pulls (プル)
- statuses (ステータス)
- コミット
- deployments (デプロイメント)
- public (パブリック)

以下の機能はデフォルトでは通知されません。

- reviews (レビュー)
- comments (コメント)
- branches (ブランチ)
- commits:* (すべてのコミット)

コメントやブランチ操作など、わりと通知してほしい機能が省かれているため、手動で追加します。

**2021/5/11追記**
`commits:all` -> `commits:*` に変更（@takasehideki さん、情報共有ありがとうございます！）

> Note: Previously we you might have used commits:all to represent all branches. 'all' is no longer a reserved keyword. Going forward, you need to use '*' to represent all branches. If you have already configured with 'commits:all' previosly, dont worry, it will continue to work until you update the commits configuration.
>
> [integrations/slack: Bring your code to the conversations you care about with the GitHub and Slack integration](https://github.com/integrations/slack#branch-filters-for-commit)


## 通知の追加

通知する機能の追加は、以下コマンドで行います。

```
/github subscribe owner/repo [機能]
```

デフォルトで通知されない機能すべてを流すなら以下コマンドを叩きましょう。

```
/github subscribe owner/repo reviews,comments,branches,commits:*
```

`This channel will get notifications from` のメッセージに続き、現在通知が有効となっている機能が羅列されます。

<img width="662" alt="スクリーンショット 2020-02-24 21.11.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6380/a4a7a0de-3f7b-dfab-bb6b-78422ab4de19.png">

これでGitHubリポジトリに行われたすべての操作がSlackチャンネルに流れるようになります。

<img width="431" alt="スクリーンショット 2020-02-24 20.27.43.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/6380/c5e850cc-c16d-04ff-1261-c0418b79ecaa.png">

やったぜ。

## 通知の削除

特定機能の通知解除は以下コマンドで行えます。

```
/github unsubscribe owner/repo [機能]
```

通知が不要な機能は削除しておきましょう。

# Slack連携はいいぞ

直近の操作ログを確認するのにも便利ですし、issueコメントやプルリクレビューのやりとりをSlackで検索できるのが超絶便利です。

開発が活発なリポジトリでは頻繁にログが流れてきますので、通知専用チャンネルを作っておくと良いでしょう。

Slackを使われている開発者の方は、ぜひGitHubと連携して開発効率をアップしていきましょう:muscle:

# 参考
[GitHub と Slack を連携させる | Slack](https://slack.com/intl/ja-jp/help/articles/232289568-GitHub-%E3%81%A8-Slack-%E3%82%92%E9%80%A3%E6%90%BA%E3%81%95%E3%81%9B%E3%82%8B)
[integrations/slack: Bring your code to the conversations you care about with the GitHub and Slack integration](https://github.com/integrations/slack)