Copyright © DeNA Co.,Ltd. All Rights Reserved.
DangerでPull Request
レビューの指摘事項
を減らす
AKIBA.swift スーパー勉強会
April 17, 2017
前田隼輔
SWETグループ
DeNA Co., Ltd.
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 前田隼輔
⁃ 所属
• DeNA システム本部 SWETグループ テスト基盤チーム
⁃ 経歴
• 3月に DeNA SWETグループ に Join
• それまでは SIer でWebアプリ開発
⁃ 普段の業務
• CI/CD環境整備、ツールの検証
• バージョンアップ自動検証システムの開発
2
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Pull Requestでこんなことありませんか?
3
ソースコード
いじってるけど
ビルドは通った?
masterブランチ
にはマージしないで
ください
対応するチケットの
URLを載せてください
ロジックや設計以外での指摘事項が多すぎる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
そこで
4
http://danger.systems/
https://github.com/danger/danger
Copyright © DeNA Co.,Ltd. All Rights Reserved.
5
🚫 Stop saying “you forgot to …”
in code review
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話しすること
 Dangerとは
 Dangerでできること
 SWET テスト基盤チームでの事例
6
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話しすること
 Dangerとは
 Dangerでできること
 SWET テスト基盤チームでの事例
7
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerとは
 Pull Request時の確認事項を自動化できるツール
 Dangerfile を作成し、その中で自由にチェックできる
 チェック結果はホスティングサービスに通知し、
Pull Request内の commit status に反映できる
 GitやGitホスティングサービスから情報を取得している
8
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerとは
 Pull Request時の確認事項を自動化できるツール
 Dangerfile を作成し、その中で自由にチェックできる
 チェック結果はホスティングサービスに通知し、
Pull Request内の commit status に反映できる
 GitやGitホスティングサービスから情報を取得している
9
Pull Requestの確認を自動化
するための基盤の提供
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerとは
10
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話しすること
 Dangerとは
 Dangerでできること
 SWET テスト基盤チームでの事例
11
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerでできること
 Dangerfile では Ruby構文 が使える
 ホスティングサービスへの通知のためのDSL
⁃ message / warn / fail / markdown
 git や github といった変数に情報が含まれている
 github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる
12
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerでできること
 Dangerfile では Ruby構文 が使える
 ホスティングサービスへの通知のためのDSL
⁃ message / warn / fail / markdown
 git や github といった変数に情報が含まれている
 github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる
13
Ruby と GitHub API
の知識があれば(なくてもググれば)
なんでもできる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Dangerでできること
 Dangerfile では Ruby構文 が使える
 ホスティングサービスへの通知のためのDSL
⁃ message / warn / fail / markdown
 git や github といった変数に情報が含まれている
 github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる
14
目的を見失わないように
🚫 Stop saying “you forgot to …”
in code review
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日お話しすること
 Dangerとは
 Dangerでできること
 SWET テスト基盤チームでの事例
15
Copyright © DeNA Co.,Ltd. All Rights Reserved.
利用しているツールの組み合わせ
 Gitホスティングサービス
⁃ GitHub Enterprise
 CI / CDツール
⁃ Jenkins
⁃ + GitHub Pull Request Builder
 ビルドマネージャ
⁃ fastlane 🚀
16
Copyright © DeNA Co.,Ltd. All Rights Reserved.
GitHub Pull Request Builder + fastlane
 GitHub Pull Request Builder
⁃ PRのコメント(Phrase)でビルドを開始できる
 fastlane 🚀
⁃ モバイルアプリに便利なビルドマネージャ
lane名によって処理を振り分けることができる
17
${ghgrpCommentBody}
にPhraseが入る
Copyright © DeNA Co.,Ltd. All Rights Reserved.
GitHub Pull Request Builder + fastlane
 GitHub Pull Request Builder
⁃ commit status に phrase (= lane名) を指定
18
Contextを
Phraseにする
Copyright © DeNA Co.,Ltd. All Rights Reserved.
fastlaneには danger アクションが用意されている
bundle exec fastlane する場合は必ず
use_bundle_exec: false にしましょう
19
> fastlane actions danger
Copyright © DeNA Co.,Ltd. All Rights Reserved.
review レーンで Danger を実行
20
Copyright © DeNA Co.,Ltd. All Rights Reserved.
チームで用いているPull Requestルール
21
 .storyboard または .xibに変更があった場合、
画像が貼り付けられていること
 ソースディレクトリ に変更があった場合、
ビルド と シミュレータによるテスト が実行されていること
 テストディレクトリ に変更があった場合、
シミュレータによるテスト が実行されていること
 ビルド および テスト が実行されていた場合、
最新の結果が 成功 していること
 Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目
があり、テンプレートから変更されていること
 TODO のチェックが埋まっていること
 ビルド と テスト はラベルによってスキップ可能
 全てOK だった場合に In Review のラベルを追加
Copyright © DeNA Co.,Ltd. All Rights Reserved.
コード化
 .storyboard または .xibに変更があった場合、
PR本文中に画像が貼り付けられていること
 テストディレクトリ以下に変更があった場合、
シミュレータによるテスト が実行されていること
 ビルド および テスト が実行されていた場合、
最新の結果が 成功 していること
Copyright © DeNA Co.,Ltd. All Rights Reserved.
共通なものはプラグイン化
23
 Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目
があり、テンプレートから変更されていること
 TODO のチェックが埋まっていること
 プラグインの作成も簡単
> danger plugins create プラグイン名
で作られたプロジェクト(danger-プラグイン名)の
lib/プラグイン名/plugin.rb
を編集
 作成したプラグインの利用
Gemfileに追加するだけ
PR本文の形式は
プラグインでまとめて検証
Copyright © DeNA Co.,Ltd. All Rights Reserved.
ラベルを自動的に貼る
24
 全てOK だった場合に In Review のラベルを追加
ラベルがある場合は安心してレビューできる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
最後に
25
 Danger を使って PRの形式や最低限の条件 をチェックを 自動化
 プロジェクトに Dangerfile を用意して
Pull Request レビュー(前)指摘事項を減らしましょう

Dangerでpull requestレビューの指摘事項を減らす

  • 1.
    Copyright © DeNACo.,Ltd. All Rights Reserved. DangerでPull Request レビューの指摘事項 を減らす AKIBA.swift スーパー勉強会 April 17, 2017 前田隼輔 SWETグループ DeNA Co., Ltd.
  • 2.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 自己紹介  前田隼輔 ⁃ 所属 • DeNA システム本部 SWETグループ テスト基盤チーム ⁃ 経歴 • 3月に DeNA SWETグループ に Join • それまでは SIer でWebアプリ開発 ⁃ 普段の業務 • CI/CD環境整備、ツールの検証 • バージョンアップ自動検証システムの開発 2
  • 3.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Pull Requestでこんなことありませんか? 3 ソースコード いじってるけど ビルドは通った? masterブランチ にはマージしないで ください 対応するチケットの URLを載せてください ロジックや設計以外での指摘事項が多すぎる
  • 4.
    Copyright © DeNACo.,Ltd. All Rights Reserved. そこで 4 http://danger.systems/ https://github.com/danger/danger
  • 5.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 5 🚫 Stop saying “you forgot to …” in code review
  • 6.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 今日お話しすること  Dangerとは  Dangerでできること  SWET テスト基盤チームでの事例 6
  • 7.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 今日お話しすること  Dangerとは  Dangerでできること  SWET テスト基盤チームでの事例 7
  • 8.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Dangerとは  Pull Request時の確認事項を自動化できるツール  Dangerfile を作成し、その中で自由にチェックできる  チェック結果はホスティングサービスに通知し、 Pull Request内の commit status に反映できる  GitやGitホスティングサービスから情報を取得している 8
  • 9.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Dangerとは  Pull Request時の確認事項を自動化できるツール  Dangerfile を作成し、その中で自由にチェックできる  チェック結果はホスティングサービスに通知し、 Pull Request内の commit status に反映できる  GitやGitホスティングサービスから情報を取得している 9 Pull Requestの確認を自動化 するための基盤の提供
  • 10.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Dangerとは 10
  • 11.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 今日お話しすること  Dangerとは  Dangerでできること  SWET テスト基盤チームでの事例 11
  • 12.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Dangerでできること  Dangerfile では Ruby構文 が使える  ホスティングサービスへの通知のためのDSL ⁃ message / warn / fail / markdown  git や github といった変数に情報が含まれている  github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる 12
  • 13.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Dangerでできること  Dangerfile では Ruby構文 が使える  ホスティングサービスへの通知のためのDSL ⁃ message / warn / fail / markdown  git や github といった変数に情報が含まれている  github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる 13 Ruby と GitHub API の知識があれば(なくてもググれば) なんでもできる
  • 14.
    Copyright © DeNACo.,Ltd. All Rights Reserved. Dangerでできること  Dangerfile では Ruby構文 が使える  ホスティングサービスへの通知のためのDSL ⁃ message / warn / fail / markdown  git や github といった変数に情報が含まれている  github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる 14 目的を見失わないように 🚫 Stop saying “you forgot to …” in code review
  • 15.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 今日お話しすること  Dangerとは  Dangerでできること  SWET テスト基盤チームでの事例 15
  • 16.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 利用しているツールの組み合わせ  Gitホスティングサービス ⁃ GitHub Enterprise  CI / CDツール ⁃ Jenkins ⁃ + GitHub Pull Request Builder  ビルドマネージャ ⁃ fastlane 🚀 16
  • 17.
    Copyright © DeNACo.,Ltd. All Rights Reserved. GitHub Pull Request Builder + fastlane  GitHub Pull Request Builder ⁃ PRのコメント(Phrase)でビルドを開始できる  fastlane 🚀 ⁃ モバイルアプリに便利なビルドマネージャ lane名によって処理を振り分けることができる 17 ${ghgrpCommentBody} にPhraseが入る
  • 18.
    Copyright © DeNACo.,Ltd. All Rights Reserved. GitHub Pull Request Builder + fastlane  GitHub Pull Request Builder ⁃ commit status に phrase (= lane名) を指定 18 Contextを Phraseにする
  • 19.
    Copyright © DeNACo.,Ltd. All Rights Reserved. fastlaneには danger アクションが用意されている bundle exec fastlane する場合は必ず use_bundle_exec: false にしましょう 19 > fastlane actions danger
  • 20.
    Copyright © DeNACo.,Ltd. All Rights Reserved. review レーンで Danger を実行 20
  • 21.
    Copyright © DeNACo.,Ltd. All Rights Reserved. チームで用いているPull Requestルール 21  .storyboard または .xibに変更があった場合、 画像が貼り付けられていること  ソースディレクトリ に変更があった場合、 ビルド と シミュレータによるテスト が実行されていること  テストディレクトリ に変更があった場合、 シミュレータによるテスト が実行されていること  ビルド および テスト が実行されていた場合、 最新の結果が 成功 していること  Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目 があり、テンプレートから変更されていること  TODO のチェックが埋まっていること  ビルド と テスト はラベルによってスキップ可能  全てOK だった場合に In Review のラベルを追加
  • 22.
    Copyright © DeNACo.,Ltd. All Rights Reserved. コード化  .storyboard または .xibに変更があった場合、 PR本文中に画像が貼り付けられていること  テストディレクトリ以下に変更があった場合、 シミュレータによるテスト が実行されていること  ビルド および テスト が実行されていた場合、 最新の結果が 成功 していること
  • 23.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 共通なものはプラグイン化 23  Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目 があり、テンプレートから変更されていること  TODO のチェックが埋まっていること  プラグインの作成も簡単 > danger plugins create プラグイン名 で作られたプロジェクト(danger-プラグイン名)の lib/プラグイン名/plugin.rb を編集  作成したプラグインの利用 Gemfileに追加するだけ PR本文の形式は プラグインでまとめて検証
  • 24.
    Copyright © DeNACo.,Ltd. All Rights Reserved. ラベルを自動的に貼る 24  全てOK だった場合に In Review のラベルを追加 ラベルがある場合は安心してレビューできる
  • 25.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 最後に 25  Danger を使って PRの形式や最低限の条件 をチェックを 自動化  プロジェクトに Dangerfile を用意して Pull Request レビュー(前)指摘事項を減らしましょう