概要
IssueやPull Requestの作成時にアサインを指定忘れることないでしょうか?
Assigneesが未指定の場合は作成した人がアサインされるようにする方法をご紹介します。
Gitシリーズ記事まとめ
GitHub Reviewer と Assignees
GitHubのIssueおよびPull Requestは Assignees
を設定できます。
Pull Requestは Reviewer
を設定できます。
Reviewerはコードをレビューして欲しい人を指定します。
必ずしもその領域の責任者やコミットのマージに責任を負う人ではありません。(今回のワークフローでは特に関係ないですね)
Assignees
はPRの作成者や現在の担当者を意味したりしますが、プロジェクトのルール次第なところがあり厳密な定義はありません。
アサインの運用の一例をご紹介します。
- PR作成時は
Assignees
に作成者をアサインする(ここを忘れ防止のため自動化してます) - レビュー依頼時は
Assignees
を外して空の状態にし、Reviewer
を指定する(複数人可) - レビューに着手する時は
Assignees
にレビュワーを設定してしてボールを持っていることを明確化します - レビューが終わったら
Approve
またはRequest Changes
を送信し、Assignees
から自分を外してPR作成者へボールを返します - レビューで
Approve
貰えたらPR作成者が責任を持ってマージします。Request Changes
の場合は 2〜4 を繰り返します
今までやってきたプロジェクトで、理に適ったアサイン運用をしていたものを参考にさせていただきました。
アサインの運用はプロジェクトによるため、1番のみで運用されていたり、マージ権限を持つ人が最終的なアサインとなる場合もあります。
後からPRを検索する時にアサインが設定されていると目的のPRを検索しやすくなるので、1番の運用をするだけでもオススメです。
利用ツール
便利なActionがすでにあったので使わせていただきます。
実装
.github/workflows/assign-author.yaml
name: Assign Author
on:
issues:
types: [opened]
pull_request:
types: [opened]
jobs:
assign-author:
if: ${{ ! contains(fromJson('["renovate[bot]", "dependabot[bot]"]'), github.actor) }}
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: technote-space/assign-author@v1
補足
Botが作成したものはスルーします。
types: [opened]
なので作成時のみ実行されます。
permissions
で書き込み権限を与えないとエラーになります。
片方だけで良い場合は、on
と permissions
で不要な方削除して使ってください。
業務改善度: ★★☆☆☆
星2つです。
地味に忘れることがあるので地味に嬉しい機能です。
なくて困る訳でも、あってめっちゃ嬉しい訳でもないですが、IssueやPR作成されるたびに活躍してくれる便利なワークフローです。
これはyamlファイルを1つ配置するだけで良いので導入しやすいです。
参考