近年はモノレポ/モノリポ (monorepo) での開発を採用するプロジェクトが増えていると思います。モノリポの善し悪しはここでは置いておいて、様々なプルリクエスト (PR) が混在することになるため、それぞれのPRがどの構成要素を変更しているのか分かりにくなりがちです。
実はGitHubには、どのファイルが変更されたかにもとづいて自動でPRにラベルを付けるActionが公式に提供されています。一見何に使うのか分からないActionですがモノリポにおいては便利です。
GitHub の自動ラベル付けActionを設定する
手順1. ラベル付けルールを用意する
以下のような、変更されたファイルのパスと付与したいラベルを紐づけるルールを用意しましょう。このファイルは .github/labeler.yml
というファイル名でリポジトリに配置します。
「apiディレクトリ配下のファイル api/**/*
を変更するPRには "scope: API" というラベルを付ける」といったルールを設定できます。
"scope: api":
- api/**/*
- .github/workflows/api-*
"scope: frontend":
- frontend/**/*
- .github/workflows/frontend-*
"scope: worker":
- worker/**/*
- .github/workflows/worker-*
"scope: ci/cd":
- .github/**/*
この例では、API(バックエンドのつもり)と、フロントエンドと、Worker(非同期タスクのつもり)と、CI/CD、の4つの要素があると仮定してラベル付けをしています。
変更された言語の拡張子に応じてラベルを付けるのもよいかもしれません。
より高度なルールを書きたい方は https://github.com/actions/labeler を参照してください。
手順2. ワークフローファイルを配置する
プルリクエストが作られたときに actions/labeler が実行されるようにしましょう。以下の内容をそのまま .github/workflows/labeler.yml
として配置すればOKです。
name: "Pull Request Labeler"
on:
- pull_request_target
jobs:
triage:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/labeler@v4
設定は以上です!