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

25
Copyright © DeNA Co.,Ltd. All Rights Reserved. Danger Pull Request レビューの指摘事項 を減らす AKIBA.swift スーパー勉強会 April 17, 2017 前田隼輔 SWETグループ DeNA Co., Ltd.

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

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

DangerでPull Request

レビューの指摘事項を減らす

AKIBA.swiftスーパー勉強会

April 17, 2017

前田隼輔SWETグループ

DeNA Co., Ltd.

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

自己紹介

前田隼輔

⁃ 所属

• DeNA システム本部 SWETグループ テスト基盤チーム

⁃ 経歴

• 3月に DeNA SWETグループ に Join

• それまでは SIer でWebアプリ開発

⁃ 普段の業務

• CI/CD環境整備、ツールの検証

• バージョンアップ自動検証システムの開発

2

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Pull Requestでこんなことありませんか?

3

ソースコードいじってるけどビルドは通った?

masterブランチにはマージしないで

ください

対応するチケットのURLを載せてください

ロジックや設計以外での指摘事項が多すぎる

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

そこで

4

http://danger.systems/https://github.com/danger/danger

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

5

🚫 Stop saying “you forgot to …”

in code review

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

今日お話しすること

Dangerとは

Dangerでできること

SWET テスト基盤チームでの事例

6

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

今日お話しすること

Dangerとは

Dangerでできること

SWET テスト基盤チームでの事例

7

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Dangerとは

Pull Request時の確認事項を自動化できるツール

Dangerfile を作成し、その中で自由にチェックできる

チェック結果はホスティングサービスに通知し、Pull Request内の commit status に反映できる

GitやGitホスティングサービスから情報を取得している

8

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Dangerとは

Pull Request時の確認事項を自動化できるツール

Dangerfile を作成し、その中で自由にチェックできる

チェック結果はホスティングサービスに通知し、Pull Request内の commit status に反映できる

GitやGitホスティングサービスから情報を取得している

9

Pull Requestの確認を自動化するための基盤の提供

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Dangerとは

10

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

今日お話しすること

Dangerとは

Dangerでできること

SWET テスト基盤チームでの事例

11

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

Dangerでできること

Dangerfile では Ruby構文 が使える

ホスティングサービスへの通知のためのDSL

⁃ message / warn / fail / markdown

git や github といった変数に情報が含まれている

github.api で OctoKit (GitHub APIの Rubyクライアント)を取得できる

12

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

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の知識があれば(なくてもググれば)

なんでもできる

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

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

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

今日お話しすること

Dangerとは

Dangerでできること

SWET テスト基盤チームでの事例

15

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

利用しているツールの組み合わせ

Gitホスティングサービス

⁃ GitHub Enterprise

CI / CDツール

⁃ Jenkins

⁃ + GitHub Pull Request Builder

ビルドマネージャ

⁃ fastlane 🚀

16

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

GitHub Pull Request Builder + fastlane

GitHub Pull Request Builder

⁃ PRのコメント(Phrase)でビルドを開始できる

fastlane 🚀

⁃ モバイルアプリに便利なビルドマネージャlane名によって処理を振り分けることができる

17

${ghgrpCommentBody}にPhraseが入る

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

GitHub Pull Request Builder + fastlane

GitHub Pull Request Builder

⁃ commit status に phrase (= lane名) を指定

18

ContextをPhraseにする

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

fastlaneには danger アクションが用意されている

bundle exec fastlane する場合は必ず

use_bundle_exec: false にしましょう19

> fastlane actions danger

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

review レーンで Danger を実行

20

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

チームで用いているPull Requestルール

21

.storyboard または .xibに変更があった場合、画像が貼り付けられていること

ソースディレクトリ に変更があった場合、ビルド と シミュレータによるテスト が実行されていること

テストディレクトリ に変更があった場合、シミュレータによるテスト が実行されていること

ビルド および テスト が実行されていた場合、最新の結果が 成功 していること

Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目があり、テンプレートから変更されていること

TODO のチェックが埋まっていること

ビルド と テスト はラベルによってスキップ可能

全てOK だった場合に In Review のラベルを追加

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

コード化

.storyboard または .xibに変更があった場合、PR本文中に画像が貼り付けられていること

テストディレクトリ以下に変更があった場合、シミュレータによるテスト が実行されていること

ビルド および テスト が実行されていた場合、最新の結果が 成功 していること

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

共通なものはプラグイン化

23

Pull Request本文に PULL_REQUEST_TEMPLATE.md と同じ項目があり、テンプレートから変更されていること

TODO のチェックが埋まっていること

プラグインの作成も簡単

> danger plugins create プラグイン名

で作られたプロジェクト(danger-プラグイン名)のlib/プラグイン名/plugin.rbを編集

作成したプラグインの利用Gemfileに追加するだけ

PR本文の形式はプラグインでまとめて検証

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

ラベルを自動的に貼る

24

全てOK だった場合に In Review のラベルを追加

ラベルがある場合は安心してレビューできる

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

Copyright © DeNA Co.,Ltd. All Rights Reserved.

最後に

25

Danger を使って PRの形式や最低限の条件 をチェックを 自動化

プロジェクトに Dangerfile を用意してPull Request レビュー(前)指摘事項を減らしましょう