LoginSignup
11
2
お題は不問!Qiita Engineer Festa 2023で記事投稿!

モノレポのPull Requestに自動で分類ラベルを付けるGitHubの公式Action

Last updated at Posted at 2023-07-20

Screenshot 2023-07-20 at 13.35.41.png
近年はモノレポ/モノリポ (monorepo) での開発を採用するプロジェクトが増えていると思います。モノリポの善し悪しはここでは置いておいて、様々なプルリクエスト (PR) が混在することになるため、それぞれのPRがどの構成要素を変更しているのか分かりにくなりがちです。

実はGitHubには、どのファイルが変更されたかにもとづいて自動でPRにラベルを付けるActionが公式に提供されています。一見何に使うのか分からないActionですがモノリポにおいては便利です。

GitHub の自動ラベル付けActionを設定する

手順1. ラベル付けルールを用意する

以下のような、変更されたファイルのパスと付与したいラベルを紐づけるルールを用意しましょう。このファイルは .github/labeler.yml というファイル名でリポジトリに配置します。

「apiディレクトリ配下のファイル api/**/* を変更するPRには "scope: API" というラベルを付ける」といったルールを設定できます。

.github/labeler.yaml

"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です。

.github/workflows/labeler.yml
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

設定は以上です!

たったこれだけの設定で下図のような自動ラベリングが実現できるのでぜひ試してみてください。
Screenshot 2023-07-20 at 13.35.41.png

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2