なぜ作ろうと思ったのか
gitHubでプルリクエストに対するコメントやレビューコメントが気付いてないのか対応が遅くなっている気がして作ってみました。
用意するもの
- slack
- AWS
- gitHub
slackで設定するもの
slack API
gitHubからの通知の受け皿を設定します。
設定方法
- https://api.slack.com/ にアクセス
- Start Building をクリック
- Create a Slack App画面で「App Name」を入力し「Development Slack Workspace」を選択し「Create App」をクリック
- App Nameは任意のわかりやすい名前をつけてください。
- Development Slack Workspaceはご自身の所属するワークスペースを選択してください。
- Basic Information画面で「Permissions」をクリック
- OAuth & Permissions画面で「Scopes」欄の「Bot Token Scopes」の下にある「Add an OAuth Score」を選択
- 出てきたプルダウンから「chat:write」を選択
- Send messages at のあとの「test」は私が仮でつけたApp名称です。
- OAuth Tokens & Redirect URLs欄の「Install App to Workspace」をクリック
- 先ほどの同じ画面の一番上にあります。
- ワークスペースにアクセする権限をリクエストしていますの画面で「testが実行できる内容は?」で「チャンネルと会話でアクションを実行する」のみが表示されていることを確認し「許可する」をクリック
- 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を作成 をクリック
- APIタイプを選択画面でREST APIの「構築」をクリック
-
プロトコルを選択する画面で「API名」を入力し「APIの作成」をクリック
-
メソッドの設定画面でアクションのプルダウンから「メソッドの作成」をクリック
- 新たに出てきたプルダウンからPOSTを選択し右のチェックマークをクリック
- POST - セットアップ画面で「Lambdaプロキシ統合の使用」にチェックをして「Lambda関数」には先ほどLambdaで作成した関数名を指定し「保存」をクリック
-
作成した関数に権限を追加するかどうか聞いてきますので「OK」を選択
-
アクションのプルダウンから「APIのデプロイ」を選択
- APIのデプロイ画面で「デプロイされるステージ」プルダウンから「新しいステージ」を選択
- ステージ名のテキストボックスが出てくるので任意の文字列(ここではdev)を入力し「デプロイ」をクリック
- ○○○(先ほど入力した名称)ステージエディター画面で「URLの呼び出し」の項目にURLが出てくるのでメモしておく
- 次のgitHubで使用します。
gitHubで設定するもの
gitHub webhooks
gitHubでのコメントをslackに通知するための設定をします。
設定方法
- 「Organizations」の「settings」の「Webhooks」を選択
- 「Payload URL」に先ほど取得したAPI GatewayのURLを入力
- 同じ画面の下の項目「Which events would you like to trigger this webhook?」では「Let me select individual events.」を選択
- 「Issue comments」と「Pull request review comments」を選択
- 同じ画面の下の項目の「Active」にチェックし「Add webhook」をクリック
設定完了
これでgitHubでメンション付きでコメントしたらslackにコメントが来ると思います。
最後に
今回はなかなか弄らないAWSの設定を慣れないながらも設定してみました。
そして備忘録も兼ねて残しています。
AWSの画面は変わることもありこれを記録した時点の情報であることをご留意ください。
あと説明書的になっているのはこの方が自分が分かり易いからです。
いろんな記事を見ているといろんな重要なところが省かれていたりしてわからないことが多かったので、、、。
あと会社の人に言われたのは https://pullreminders.com/ の Pull Panda導入するとこんなことしなくてもいいよ!
ってことでした、、、。
oh!なんということでしょう。