この記事はGRIPHONE Advent Calendar 2022 9日目の記事です。
こんにちは、サーバーサイドエンジニアのtackです。
弊社ではGitHubのプルリクエストでコードレビューをしているのですが、時間がかかり大変なのと、見逃しも結構あります。
そこで、GitHub Actionsを使い少しでもプルリクエストのレビューコストを下げられないか試して見たので、紹介します。
今回は2記事構成で、2記事目となります。
1記事目はこちら
Run eslint with reviewdog
ESLintを実行して、プルリクエストにエラーや、警告を投稿するActionです。投稿される項目は、プルリクエストに含まれるコミット部分のみになります。
なので、プルリクエストに差分が含まれていない部分のエラーについては投稿されません。
投稿の例:
reviewdogというのは、GitHubのプルリクエストに上記のような投稿を簡単にできるようにするツールです。ESLint以外にも色々なLinterに対応しているので、MarketplaceでLinter名 + reviewdog
と検索すると見つかるかもしれません。
ディレクトリー構成
└─.github
└─workflows
└─eslint.yml
eslint.ymlの内容
eslint.ymlの全体は以下の様になります。
name: ESLint
on:
pull_request:
types:
- opened
- synchronize
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
reviewdog:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v3
- uses: reviewdog/action-eslint@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
eslint_flags: 'src/'
on, concurrencyについては1回目の記事で解説しているので、省略します。
actions/checkout
- uses: actions/checkout@v3
actions/checkout
はActionのsteps
で、現在のブランチの内容をチェックアウトして、steps
内でファイルを使える様にするものです。
ブランチのファイルに対して、ESLintを実行するのに使っています。
reviewdog/action-eslint
- uses: reviewdog/action-eslint@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
eslint_flags: 'src/'
この部分がRun eslint with reviewdogになります。
eslint_flags
でESLintに渡すオプションを設定できます。
今回はsrc
ディレクトリーの中にjsファイルが入っているので、パスを指定しています。
最後に
ESLintを自動で実行して、プルリクエストにわかりやすく表示するActionを紹介しました。reviewdogはプルリクエストにレビュー形式で投稿されるので、レビューがやりやすくなりました。
ESLintだけでなく、カスタマイズもできて何でも投稿できるので自作のツールと組み合わせるのも良いと思います。