[GitHub Actions] PRに自動でAssigneesを追加する

2024-08-30 hit count image

GitHub Actionsを使ってPRに自動でAssigneesを追加する方法について説明します。

概要

通常、開発が完了した後、開発を担当した開発者がGitHubでPR(Pull Request)を作成し、自分自身をAssigneesに追加します。しかし、毎回PRを作成するたびにAssigneesに自分自身を追加するのは手間です。

このブログポストでは、GitHub Actionsを使ってPRを作成するたびに自動的にAssigneesにPRを作った開発者を追加する方法について説明します。

GitHub Actions生成

PRに自動的にAssigneesを追加するGitHub Actionsを作成するために.github/workflows/auto-assign-assignees.ymlファイルを作成し、次のように修正します。

name: Assign assignees

on:
  pull_request:
    types:
      - opened

jobs:
  assign:
    name: Set assignees
    runs-on: ubuntu-latest
    timeout-minutes: 1
    if: github.event.pull_request.user.login != 'dependabot[bot]'
    steps:
      - name: Set assignees
        uses: actions/github-script@v7
        with:
          github-token: $
          script: |
            const { owner, repo } = context.repo
            const prNumber = context.payload.pull_request.number

            const response = await github.rest.issues.get({
              owner,
              repo,
              issue_number: prNumber,
            })
            const { assignees } = response.data

            if (assignees.length === 0) {
              await github.rest.issues.addAssignees({
                owner: owner,
                repo: repo,
                issue_number: prNumber,
                assignees: [context.actor]
              })
            }

このGitHub Actionsをもう少し詳しく見ていきましょう。

...
on:
  pull_request:
    types:
      - opened
...

このGitHub ActionsはPRが作成されたときに実行されます。

...
jobs:
  assign:
    ...
    if: github.event.pull_request.user.login != 'dependabot[bot]'
    ...

私はGitHubでDependabotを使っています。Dependabotが生成したPRのAssigneesにDependabotを追加できないので、Dependabotが生成したPRにはAssigneesを追加しないように設定しました。

...
jobs:
  assign:
    ...
    steps:
      - name: Set assignees
        uses: actions/github-script@v7
        with:
          github-token: $
          script: |
            const { owner, repo } = context.repo
            const prNumber = context.payload.pull_request.number

            const response = await github.rest.issues.get({
              owner,
              repo,
              issue_number: prNumber,
            })
            const { assignees } = response.data

            if (assignees.length === 0) {
              await github.rest.issues.addAssignees({
                owner: owner,
                repo: repo,
                issue_number: prNumber,
                assignees: [context.actor]
              })
            }

GitHubが提供するGitHub Actionsを使ってJavaScriptコードでPRを作成する開発者(context.actor)をAssigneesに追加するコードを書きました。

完了

これでPRを作成するたびに自動的にAssigneesにPRを作った開発者を追加するGitHub Actionsを作成する方法について説明しました。皆さんもこのGitHub Actionsを使って手動で設定していたAssigneesを自動的に設定してみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

アプリ広報

今見てるブログを作成たDekuが開発したアプリを使ってみてください。
Dekuが開発したアプリはFlutterで開発されています。

興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。

Posts