GitHubのWebhook活用

2017年7月からGMOアドマーケティングのSSP開発チームにJoinしたKA.Mです。
先日、試用期間も無事終え落ち着きました。
GMOアドパートナーズグループには、住宅補助手当という
オフィスビル近隣に住んでいる人が対象となる福利厚生があるので、
そろそろオフィスビル近くに引越かと考えています。

早速本題です。

Webhookってなに?

Webhookとは特定の条件を満たした際に他のアプリケーション/URLへリクエストする仕組みとなります。
SSP開発チームでは今回紹介するGitHubの他にSlackのWebhookも活用しています。

活用事例

SSP開発チームはGitHubのレビュー機能を利用したGitHubフローで開発しています。
Pull Request = レビュー依頼ではないため、レビュー依頼はラベル機能を利用していますが、
レビューNGとなった場合、主に3つ問題がありました。

  • Pull Requestの一覧上のレビュー結果が見辛い
  • ラベルが放置され、レビュー依頼中なのか、修正中なのかの判断がつかない
  • ラベルが放置されガチだったため、”[WIP]”とタイトルに付けるPRが散見された

上記のような問題を抱えていたため、
GitHubのWebhookを利用し、レビュー結果を元にラベルの張替を実現しました。
ラベル張替をWebhookに任せる事で、以下のメリットがありました。

  • ラベルがついていない = 開発/修正中
  • ラベルがついている = レビュー依頼中/レビュー完了
  • “[WIP]”が消えました

実装コード例

Webhook設定

去年の10月に追加されたPullRequestReviewEventを利用します。
まず、GitHub側のWebhook設定を行います。
Webhookを適用したいリポジトリのページから Settings > Webhooks と遷移し、 Add webhook から新規にWebhookを追加します。
今回は Let me select individual events. を選択し、 Pull request review のみにチェックを入れます。

Access Token取得

ラベル張替用のAccess Tokenを生成します。
アカウント情報の Settings > Developer settings > Personal access tokens にアクセスし、 Generate new token から新規にトークンを発行します。
利用しているリポジトリに応じ public_reporepo にチェックを入れます。

リクエスト先の設定例

SSP開発チームではPHP、JavaScript、Ruby、Goで開発を行っていますが、
今回はPHPでの実装例となります。

GitHubのdeveloperガイドに記載ありますが、GitHubからみたPull Requestはissueと大差ありません。

Labels, assignees, and milestones

その事を踏まえた上で、下記実装を行いました。

まとめ

ラベルの張替は対応時間としては微々たるものですが、日々の業務で開発者全員にちょっとした気遣いを強いるものでした。
そのちょっとした気遣いを自動化する事で意識せずに済むようになったためチーム内で好評でした。

リクルーティング

GMOアドマーケティングではBigQuery、機械学習など新しい技術に興味のあるエンジニアに限らず、
開発効率の向上に積極的なエンジニアを募集しています。