[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를 자동으로 설정해 보시기 바랍니다.

제 블로그가 도움이 되셨나요? 하단의 댓글을 달아주시면 저에게 큰 힘이 됩니다!

앱 홍보

책 홍보

블로그를 운영하면서 좋은 기회가 생겨 책을 출판하게 되었습니다.

아래 링크를 통해 제가 쓴 책을 구매하실 수 있습니다.
많은 분들에게 도움이 되면 좋겠네요.

스무디 한 잔 마시며 끝내는 React Native, 비제이퍼블릭
스무디 한 잔 마시며 끝내는 리액트 + TDD, 비제이퍼블릭
[심통]현장에서 바로 써먹는 리액트 with 타입스크립트 : 리액트와 스토리북으로 배우는 컴포넌트 주도 개발, 심통
Posts