Upload
shunsuke-maeda
View
1.659
Download
0
Embed Size (px)
Citation preview
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 レビュー(前)指摘事項を減らしましょう