gitHubコメントをslackに通知してみた

# なぜ作ろうと思ったのか
gitHubでプルリクエストに対するコメントやレビューコメントが気付いてないのか対応が遅くなっている気がして作ってみました。

# 用意するもの
- slack
- AWS
- gitHub

# slackで設定するもの

## slack API
gitHubからの通知の受け皿を設定します。

### 設定方法
- https://api.slack.com/ にアクセス
- Start Building をクリック

![スクリーンショット 2020-04-23 16.29.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/c6ef03af-e482-e687-3388-0479eddc48d1.png)

- Create a Slack App画面で「App Name」を入力し「Development Slack Workspace」を選択し「Create App」をクリック
 - App Nameは任意のわかりやすい名前をつけてください。
 - Development Slack Workspaceはご自身の所属するワークスペースを選択してください。

![スクリーンショット 2020-04-23 16.30.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/cdea6c46-1132-997b-13d9-2b030cccd5ac.png)

- Basic Information画面で「Permissions」をクリック

![スクリーンショット 2020-04-23 16.37.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/65c3c6f5-58fe-dd76-f27e-27f0968a26c0.png)

- OAuth & Permissions画面で「Scopes」欄の「Bot Token Scopes」の下にある「Add an OAuth Score」を選択

![スクリーンショット 2020-04-23 16.44.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/f986affd-c8b7-fd9c-384b-81bc395fd525.png)

- 出てきたプルダウンから「chat:write」を選択
 - Send messages at のあとの「test」は私が仮でつけたApp名称です。

![スクリーンショット 2020-04-23 16.45.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/fe566dc8-ab60-59f0-72dd-009754b110b2.png)

- OAuth Tokens & Redirect URLs欄の「Install App to Workspace」をクリック
 - 先ほどの同じ画面の一番上にあります。

![スクリーンショット 2020-04-23 16.49.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/16fee9f8-b3c4-008d-1d5c-90afc89f6917.png)

- ワークスペースにアクセする権限をリクエストしていますの画面で「testが実行できる内容は？」で「チャンネルと会話でアクションを実行する」のみが表示されていることを確認し「許可する」をクリック

![スクリーンショット 2020-04-23 16.53.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/b9962685-bfa6-6261-1421-efd0f5e86db0.png)

- OAuth Tokens & Redirect URLs欄のBot User OAuth Access Tokenのテキストボックス内にトークンが表示されるのでメモしておく
 - 次のLambda関数で使用します。


# AWSで設定するもの
## Lambda
githubからslackへ通知するための通信を仲介するために使います。
コードについては https://qiita.com/hkusu/items/a899e51bdd260ab908d7 を参考にしました。
環境変数の設定に先ほどslack APIで取得したトークンを設定してください。

## API Gateway
gitHubからslackへ通知するための通信を仲介するために使います。

### 設定方法
- API Gatewayにアクセスする
- APIを作成 をクリック

![スクリーンショット 2020-04-23 16.02.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/39eae333-9831-4ce7-f7f3-98a726fad4c0.png)

- APIタイプを選択画面でREST APIの「構築」をクリック

![スクリーンショット 2020-04-23 16.05.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/23860c58-973e-3670-f271-964f6acaa399.png)

- プロトコルを選択する画面で「API名」を入力し「APIの作成」をクリック
 - API名は任意のわかりやすい名前をつけてください。
![スクリーンショット 2020-04-23 16.07.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/9cbfcafc-82c4-ca3b-3126-2eaf2900c4af.png)

- メソッドの設定画面でアクションのプルダウンから「メソッドの作成」をクリック

![スクリーンショット 2020-04-23 16.14.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/aaa11487-9df4-7866-9832-a8039962a009.png)

- 新たに出てきたプルダウンからPOSTを選択し右のチェックマークをクリック

![スクリーンショット 2020-04-23 16.17.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/432daf1f-11da-c5ad-be54-fd3034f6d98d.png)

- POST - セットアップ画面で「Lambdaプロキシ統合の使用」にチェックをして「Lambda関数」には先ほどLambdaで作成した関数名を指定し「保存」をクリック

![スクリーンショット 2020-04-24 8.43.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/c95c1518-07fb-45b1-3e6f-172ef004d001.png)

- 作成した関数に権限を追加するかどうか聞いてきますので「OK」を選択

- アクションのプルダウンから「APIのデプロイ」を選択

![スクリーンショット 2020-04-24 8.59.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/c7d29604-6d52-8b10-2e3d-a0ee97a28770.png)

- APIのデプロイ画面で「デプロイされるステージ」プルダウンから「新しいステージ」を選択

![スクリーンショット 2020-04-24 9.11.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/a973694c-3100-1841-f543-1556122a18b1.png)

- ステージ名のテキストボックスが出てくるので任意の文字列（ここではdev）を入力し「デプロイ」をクリック

![スクリーンショット 2020-04-24 9.12.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/905ace47-931c-2f88-e07d-4b11cf03e6ff.png)

- ○○○（先ほど入力した名称）ステージエディター画面で「URLの呼び出し」の項目にURLが出てくるのでメモしておく
 - 次のgitHubで使用します。

# gitHubで設定するもの

## gitHub webhooks
gitHubでのコメントをslackに通知するための設定をします。

### 設定方法
- 「Organizations」の「settings」の「Webhooks」を選択
- 「Payload URL」に先ほど取得したAPI GatewayのURLを入力

![スクリーンショット 2020-04-24 9.21.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/5b09dc76-8f9a-d961-e094-8c884bac2b4f.png)

- 同じ画面の下の項目「Which events would you like to trigger this webhook?」では「Let me select individual events.」を選択
 - 「Issue comments」と「Pull request review comments」を選択


![スクリーンショット 2020-04-24 9.25.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/d64375a8-d097-7c25-0b3b-cdaa353f510f.png)

- 同じ画面の下の項目の「Active」にチェックし「Add webhook」をクリック

![スクリーンショット 2020-04-24 9.28.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110893/70a71d65-c600-289f-4c96-6600ba6eae9b.png)

# 設定完了

これでgitHubでメンション付きでコメントしたらslackにコメントが来ると思います。

# 最後に

今回はなかなか弄らないAWSの設定を慣れないながらも設定してみました。
そして備忘録も兼ねて残しています。
AWSの画面は変わることもありこれを記録した時点の情報であることをご留意ください。

あと説明書的になっているのはこの方が自分が分かり易いからです。
いろんな記事を見ているといろんな重要なところが省かれていたりしてわからないことが多かったので、、、。


あと会社の人に言われたのは https://pullreminders.com/ の Pull Panda導入するとこんなことしなくてもいいよ！
ってことでした、、、。

oh!なんということでしょう。