LoginSignup
11
8

More than 5 years have passed since last update.

なんとかしてgithubでレビュー依頼が来たらslackでmention付けてやる

Last updated at Posted at 2019-03-10

githubとslackの連携は非常に簡単にできて良いのですが、いかんせんmentionが付かないんですよね。
「メンションが無いと気づかないよ!」なんていうコミュニケーションは無駄なので、自動化したので紹介します。
※人数規模が大きかったりレポジトリが無数にあるような状況には向いてない方法かもしれませんのであしからず

登場人物

  • github
  • Google SpreadSheet
  • Slack
  • Zapier

方針

問題はgithubアカウントとslackアカウントの紐付けです。
SpreadSheatを使って、githubアカウントidとslackのidを同じ列に入力します。
これをZapierというワークフローを作成するツールを利用していい感じに取得結果を使ったmention機構をつくります。

Zapier

準備

まずidの紐付けをしておきます。
新規でスプレッドシートを作成して下図の様に1行目にheader情報を付与します。
スクリーンショット 2019-03-10 21.45.08_mosaic.png
2行目以降に実際のgithubのidとslackのidを入力しておきましょう。

Zapを作成する

ZapierのタスクはZapと呼ばれています。mention用に新規作成して設定していきます。
全て英語なのが取っ掛かりにくいポイントですがそこは頑張ります。

アプリケーションの選択

まずはベースとなるアプリケーションを選びます。後からどうにでも編集できますが、今回はトリガーとなるGithubと最終アウトプットとなるSlackを選択して Make a Zap!ボタンを押します。
スクリーンショット 2019-03-10 21.53.21.png

Githubの設定

トリガー設定

まずはトリガーとなるGithubの設定です。最初にトリガーアクションの設定の選択画面が出てきます。最初は3個しか選択肢が見えませんが、show less common options をクリックすると画面が出てくるので New Pull Request を選びます。
スクリーンショット 2019-03-10 21.55.52.png

アカウント設定

自身のGithubアカウントに接続して認証を行いましょう。

ここでOrganaization内のPrivateレポジトリを使っている場合は追加で認証が必要です。

GithubでZapierの操作権限を許可

Githubでアカウント毎にZapierからのアクセスを許可する必要があります。
Githubのページにログインして、右上のアイコンをクリックして出てくるメニューから
Settings > Applications に進みます。
タブでAuthorized OAuth Appsを選択するとZapierが出てくるはずなので選択。
ページ右下にオーナーへの認証Requestを出すボタンがあるので押します。
あとは会社の偉い人に連絡して認可してもらいましょう。

レポジトリ選択

次は連携したいレポジトリを選びましょう。これが一つしか選択できないのが少し残念なポイント。
今の所レポジトリ毎か、特定ユーザが作成したreview依頼単位でZapを作るしかできなそうです(自分調べ)

スクリーンショット 2019-03-10 22.20.11.png

サンプルを選ぶ

次にサンプルを選択します。これは結構大事で、この先の設定をどのプルリクのデータを参考に作っていくかを選ぶことになります。実際にreviewerを設定してるプルリクを選ぶと良いと思います。
スクリーンショット 2019-03-10 22.25.08.png

これでGithubの設定は終わりです。
次のアクションを設定します。
スクリーンショット 2019-03-10 22.35.37.png

ADD A STEP でアクションを増やしてSpreadSeetを選びます。

スプレッドシートの設定

次はプルリクに設定されたreviewer情報からslackのidを検索させます。

アクションの選択

Lookup SpreadSheet Row という選択肢があるのでこれを選びます。
スクリーンショット 2019-03-10 22.45.18.png

次の画面でアカウント選択画面になるので、自分のアカウントで連携させます。

Lookupの設定

どのシートに対してどんな条件でデータ検索をするのかを設置します。

まずはスプレッドシート本体とWorksheetを選択します。
画像はズボラなのでデフォルトのシート1になってますが、適切な名前を選択しましょう。
スクリーンショット 2019-03-10 22.48.14.png

Lookup Columnにはシートの1行目のヘッダー情報の中から、検索条件に使う列を指定します。
今回だと「github」の列が対象なので選択します。

次にgithubの列をどの値で検索するかを選びます。今回はRequested Reviewersを選びます。
mosaic_スクリーンショット 2019-03-10 22.52.45.png

Reviewersは複数設定できます。複数いる場合はカンマ区切りで入ってきますのでそれを考慮する場合は別途処理が必要です。Actionでpythonを実行できるので、空の時、1人の時、2人以上の時で処理を分けるのが良い気がしていますが、本記事では触れません。

シートでデータが見つからなかったらエラーになって処理はストップします。

Slackの設定

アクションの選択

最後は通知設定です。
チームで使うならチャンネル通知がいいと思うのでそれを選びます。
スクリーンショット 2019-03-10 23.02.25.png

通知時の内容選択

ここで投稿時の内容を入力するので、mentionの設定をします。
mentionは<@[slackId]>で通知できるので、うまく結果を埋め込んで使いましょう。
スクリーンショット 2019-03-10 23.07.28.png

これで登録まで行えばあとは該当レポジトリでプルリクがreviewer付きで作られる度にmentionが飛んできます。

slack通知はbotとして投稿ができるので、アイコンカスタマイズできるので愛着がわくキャラクターで通知したら良いかもしれません。

うちのチームでは会社のキャラクー「たかし」がプルリク管理人として投稿してきます。
ちょっと和みます。

課題

気軽に作るには良い方法だと思いましたが、課題はあります。
- レポジトリごとにZapを作る必要がある
- Zapierの監視インターバルが5分なので最大5分の遅延がある

割と遅延が痛かったりします。
急ぎの時は自分でmentionつけちゃったりするので。あくまで保険的な役割のmentionとして使うのがいいかなと思います。

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8