🍡

PR の assignees が空だったときに自動アサイン

2021/06/26に公開
2

PR 作成者をアサイン

.github/workflows/assign.yml
name: Assign

on:
  pull_request:
    types: [ opened, unassigned ]

jobs:
  assign:
    runs-on: ubuntu-20.04
    timeout-minutes: 1

    steps:
      - run: cat $GITHUB_EVENT_PATH
      - run: gh pr edit $NUMBER --add-assignee $ASSIGNEE
        env:
          GH_TOKEN: ${{ github.token }}
          GH_REPO: ${{ github.repository }}
          NUMBER: ${{ github.event.pull_request.number }}
          ASSIGNEE: ${{ github.event.pull_request.user.login }}
        if: ${{ toJSON(github.event.pull_request.assignees) == '[]' }}

補足: gh

https://zenn.dev/snowcait/articles/0e430af5fb1e50

github.token (secrets.GITHUB_TOKEN) を使用した場合 --add-assignee @me にすると github-actions[bot] をアサインしようとしてエラーになります。

'github-actions[bot]' not found

補足: if

本当は count して == 0 で比較したいのですが現在は関数がありません。[1]
代わりに JSON に変換して文字列として比較します。

        if: ${{ toJSON(github.event.pull_request.assignees) == '[]' }}

reviewers も自動リクエスト

assignees と同様に gh pr edit $NUMBER --add-reviewer $REVIEWER してもいいですし、コードオーナーという仕組みもあります。
https://docs.github.com/ja/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-code-owners

他にも選択肢はありそうです。
https://tech-1natsu.hatenablog.com/entry/2020/01/17/032049

脚注
  1. 提案はされているようです: Introduce function count() for arrays & strings by sshymko · Pull Request #864 · actions/runner ↩︎

Discussion

mikan3rdmikan3rd

こちらの記事参考にさせていただきました、ありがとうございます!

少しだけ補足なのですが、botユーザーの場合はCI実行時にエラーになってしまったので、if文でBotは除くようにすると良さそうでした

if: ${{ github.event.pull_request.user.type != 'Bot' && toJSON(github.event.pull_request.assignees) == '[]' }}