mainブランチに対するPullRequest作成時にラベルを自動付与するGitHubActionsを組む
はじめに
自分はmainブランチをリリース用のブランチとし、developブランチから開発用のブランチをチェックアウトしている。リリースする際はdevelopブランチからmainブランチにPullRequestを作成してマージをしている。
このPullRequestにrelease
ラベルを毎回付けていたが自動化したくなり、今回はそのワークフローを組んだので残しておく。ちなみにPullRequestへのラベルはリリースノート自動作成用に使用している。
ワークフロー
組んだワークフローは以下。
name: Label Release PR
on:
pull_request:
types: opened
branches:
- main
jobs:
label-release:
if: ${{ github.base_ref == 'main' && github.head_ref == 'develop' }}
runs-on: ubuntu-latest
steps:
- name: Apply release label
uses: actions-ecosystem/action-add-labels@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
labels: release
以下でmainブランチに対するPullRequestの作成をトリガーにしている。自分の場合はPullRequestの作成のみをトリガーにしているが、例えばPullRequestに変更があったときにも実行させたい場合は、types: [ opened, synchronize ]
のように指定する。
on:
pull_request:
types: opened
branches:
- main
ここではgithub.base_ref
とgithub.head_ref
を使って、developブランチからmainブランチに対するPullRequestの作成時にのみジョブが実行されるように制御している。
if: ${{ github.base_ref == 'main' && github.head_ref == 'develop' }}
そして、ここでPullRequestにラベルを付与している。使用しているActionはactions-ecosystem/action-add-labels。labels
で付与したいラベルを指定する。
- name: Apply release label
uses: actions-ecosystem/action-add-labels@v1
with:
labels: release
複数のラベルを付与したい場合は以下のように指定する。
with:
labels: |
release
feature
おわり
今回はリリース用のPullRequestにのみラベルを付けたが、例えばPullRequestのタイトルの接頭辞にfeat:
やfix:
が付いていたらfeature
やbug
のラベルをつける、ということもできそう。
こういったブレやミスのある人間の判断や操作を必要とする定期作業はなるべく自動化してミスを無くし楽をするようにしたい。