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