MENU
カテゴリー

GitHub Actionsでコードレビュー依頼を自動化する方法

  • URLをコピーしました!

私が参画しているプロジェクトでは、いつもコードレビューを依頼するときは特定のメンバーに依頼をしている。プルリクエストを作成し、そのタイミングでreviwerを手動で選択していた。同じような人は多いのではないのだろうか。これを自動化する。たった数秒の手間の削減だが、GitHub Actionsを使用してできることはたくさんあるらしい。

目次

コードレビュー依頼の自動化を実現するためのコード

使用したいactionとしては以下になる。

https://github.com/marketplace/actions/auto-request-review

そして、実際のコードはこんな感じ。

name: Auto Request Review

on:
  pull_request:
    branches:
      - main
    types: [opened, reopened]

permissions:
  id-token: write
  contents: read
  pull-requests: write

jobs:
  auto-request-review:
    name: Auto Request Review
    runs-on: ubuntu-latest
    steps:
      - name: Request review based on files changes and/or groups the author belongs to
        uses: necojackarc/auto-request-review@v0.13.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          config: .github/reviewers.yml # Config file location override
          # Look for config locally during run instead of in repo.
          # For instance, if you'd like to use a config file stored in external storage,
          # you can fetch it before you run this action, then let this action pick it up with `use_local: true`.
          # This defaults to false if not specified.
          # See https://github.com/necojackarc/auto-request-review/issues/76 for more details.
          use_local: false

トリガーとしては、プルリクエストがopenしたときもしくはreopneされたときにした。そして、mainブランチをtarget_branchとしたプルリクエストであることも条件とした。branchesで指定しているブランチ名は、プルリクエスト自体のブランチ名ではなく、マージをしたいブランチ(target_branch)になるので注意。

on:
  pull_request:
    branches:
      - main
    types: [opened, reopened]

レビュワーに関する設定ファイル

auto_request_review.ymlのjobsでconfig: .github/reviewers.ymlとしているので.github/reviwers.ymlを用意する。このファイルでは、実際に自動で設定されるレビュワーや各種オプションを記載することができる。

reviewers:
  # Reviewers per author.
  # Keys are reviewees, each of which has an array of reviewers.
  defaults:
    - gorira-san
files:
  # Keys are glob expressions.
  # You can assign groups defined above as well as GitHub usernames.
  '**':
    - gorira-san

options:
  ignore_draft: true
  ignored_keywords:
    - DO NOT REVIEW

デフォルトのレビュワーはgorira-sanにした。これはgithubのユーザー名を指定する。

reviewers:
  # Reviewers per author.
  # Keys are reviewees, each of which has an array of reviewers.
  defaults:
    - gorira-san

ファイルに応じたレビュワーの指定もできるっぽいが、リポジトリ全体で同じレビュワーに依頼が必要なため以下のようにした。

files:
  # Keys are glob expressions.
  # You can assign groups defined above as well as GitHub usernames.
  '**':
    - gorira-san

そして、optionsとして諸々を指定。draft状態のプルリクエストの場合は、このworkflowは動作しないこと、プルリクエストのタイトルに「DO NOT REVIEW」という文字が含まれているる場合も同様に動作しないことなどを記載しといた。おそらく「WIP」など結構使われているのでここに含めるのもいいと思う。

よかったらシェアしてね!
  • URLをコピーしました!
目次