- 公開日
reviewdogを使ってGitHub Actions上でRuboCop自動レビューを動かす
過去にreviewdogを使ってCircleCI上でrubocop自動レビューを動かす記事を書きました。
Blogged. | reviewdogを使ってCI上でRuboCop自動レビューを動かす - Hack Your Design! https://t.co/8vdNUEIisX
— toshimaru (@toshimaru_e) November 19, 2018
本記事はそれのGitHub Actionsバージョンになります。
なぜGitHub Actionなのか?
以前に書いた記事のようにCircleCIでも問題はないものの、GitHub ActionsはデフォルトでPull Requestにコメント可能な GITHUB_TOKEN
を吐くことが可能で、そのへんのtoken周りの煩雑な設定が不要という点でCircleCIよりアドバンテージがあると言えます。
Authenticating with the GITHUB_TOKEN - GitHub Help
GitHubが公式機能として出していることもあり、GitHubとのIntegrationはGitHub Actionsのほうが優れている印象があります。
基本のrubocop設定
GitHub Actionsで動かす基本となるrubocop設定は下記の通りです。
※ 実際はbundlerのキャッシュの設定などが必要ですが今回は設定していません
# .github/workflows/rubocop.yml
name: RuboCop
on: [pull_request]
jobs:
rubocop:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-ruby@v1
with:
ruby-version: 2.6
- run: |
gem install bundler
bundle install
- name: Run rubocop
run: bundle exec rubocop
上述の設定をベースにreviewdogを使った自動レビューの設定を追加していきます。
reviewdogによる自動レビューを追加
追加するのは下記の2ステップです。
- Setup reviewdog: reviewdog のバイナリをインストール
- Run rubocop with reviewdog: rubocop の指摘を reviewdog に渡してPRコメントを付けさせる
yamlファイルとしては下記になります。
# .github/workflows/rubocop.yml
name: RuboCop
on: [pull_request]
jobs:
rubocop:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-ruby@v1
with:
ruby-version: 2.6
- run: |
gem install bundler
bundle install
- name: Setup reviewdog
run: |
mkdir -p $HOME/bin && curl -sfL https://raw.githubusercontent.com/reviewdog/reviewdog/master/install.sh | sh -s -- -b $HOME/bin
echo ::add-path::$HOME/bin
- name: Run rubocop with reviewdog
env:
REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: bundle exec rubocop | reviewdog -reporter=github-pr-review -f=rubocop
レビューコメント
設定がうまくいっていれば、下記のように github-actions
からの自動レビューコメントが付きます。
実際に動かしてみたPull Request
実際にこの構成で設定してみたPRは下記になります。
rubocop x reviewdog x GitHub Actions by toshimaru · Pull Request #16 · toshimaru/Test
余談
本記事ではミニマルな設定を紹介しましたが、実行高速化のために実際は下記の設定もあわせてしたほうが良いでしょう。
- bundler cache の設定
- rubocop cache の設定(
~/.cache/rubocop_cache
) --parallel
オプションの追加