Fablog

社会人マイナス1年生のブログ / プログラミング / 料理 / ビットコイン

CIでPullRequestの自動レビューを行う

概要

Dangerを使ってプルリクエストの自動レビューを行う

詳細

僕は未熟な人間なのでよくないプルリクを多々投げてしまいます タイポとか、使ってない関数残ってたりとか、記法の間違えとか

そういう小さな間違えで先輩の貴重な時間を使うのは申し訳なさすぎるのでDangerというものを導入しようと思いました Dangerは自動でプルリクにレビューをしてくれるライブラリです

人の手を煩わせなくても指摘できるような小さなミスを機械がレビューしてくれます

今回はこのDangerとeslintていい感じのレビューをしてくれるBotを作っていきます

導入方法

今回はDangerfileでcheckstyle.xml形式のファイルを読み込んでレビューを行うようにするので、eslintcheckstyle.xmlを出力できるように準備しておく

{
 ~~~ 省略 ~~~
  scripts: {
    "lint:checkstyle": "eslint src -f checkstyle -o checkstyle.xml"
  }
 ~~~ 省略 ~~~
}

Gemを使う準備をする

$ bundle init

Gemの設定

# frozen_string_literal: true
source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem 'danger'
#checkstyle を読み込んでレビューできるようにするためのGem
gem 'danger-checkstyle_format'

Gem を入れる

$ bundle install

ルートディレクトリでDangerfileを作る

# including in a project's CHANGELOG for example
github.dismiss_out_of_range_messages

checkstyle_format.base_path = Dir.pwd
checkstyle_format.report("${your-path}/checkstyle.xml")

circleciでdangerを実行するように設定します このときにDANGER_GITHUB_API_TOKENという値を同時に設定しておきます このTOKENの値はGithubsetting -> developper setting -> personal access token で取得できます このTokenの所持者のアカウントでdangerによるレビューが行われるのでBot用のアカウントを作っておくと便利です

machine:
  environment:
    DANGER_GITHUB_API_TOKEN: ${your github api token}
test:
  override:
    - npm run lint:checkstyle
    - bundle exec danger

これで、circle ci でビルドが走るたびに stylecheck.xml が生成され、その値によってレビューがされるようになります

スクリーンショット 2017-10-28 18.37.29.png

すごい!便利!はっぴー!

参考

Dangerで効率よくPR駆動開発 | Recruit Jobs TECHBLOG

github.com

qiita.com