[GitHub Actions] Pull request의 Label 검사

2024-02-03 hit count image

GitHub Actions중 하나인 PR Labels Checker를 사용하여 GitHub의 Pull request의 Label을 검사하는 방법에 대해서 알아보겠습니다.

개요

GitHub에서 Pull requestLabels 기능을 사용하여 Pull request를 관리합니다.

GitHub Actions - PR Labels Checker, pull request labels

이번 블로그 포스트에서는 GitHub Actions중 하나인 PR Labels Checker를 사용하여 Pull requestLabels를 검사하는 방법에 대해서 알아보겠습니다.

블로그 시리즈

이 블로그는 시리즈로 제작되었습니다. 다음 링크를 통해 다른 블로그 포스트도 확인해 보시기 바랍니다.

PR Labels Checker

PR Labels CheckerGitHub Actions중 하나로, Pull requestLabels를 검사하는 기능을 제공하고 있습니다.

GitHub Actions 작성

PR Labels Checker를 사용하여 Pull requestLabels를 검사하는 GitHub Actions를 작성해 보겠습니다. .github/workflows/pr-labels-checker.yml 파일을 만들고 다음과 같이 수정합니다.

name: PR Labels Checker

on:
  push:
    branches:
      - main
  pull_request:
    types:
      - opened
      - reopened
      - synchronize
      - labeled
      - unlabeled

jobs:
  pr_labels_checker:
    permissions:
      pull-requests: write
      checks: write
    runs-on: ubuntu-latest
    steps:
      - uses: danielchabr/[email protected]
        with:
          hasSome: breaking change,feature,bug,style,refactor,test,chore,docs,ci,dependencies
          githubToken: $

GitHub ActionsPull request가 생성되거나 Pull requestLabel을 추가, 해제할 때, 실행됩니다.

on:
  push:
    branches:
      - main
  pull_request:
    types:
      - opened
      - reopened
      - synchronize
      - labeled
      - unlabeled

PR Labels Checker를 사용하기 위해서는 Pull requestchecks에 대한 권한이 필요합니다.

jobs:
  pr_labels_checker:
    permissions:
      pull-requests: write
      checks: write

이제 PR Labels Checker를 사용하여 Pull requestLabel을 검사합니다. Label을 검사할 때는 다음과 같은 조건을 사용할 수 있습니다.

  • hasSome: 콤마로 구분된 Label 리스트로, PR은 이 중 하나를 반드시 포함해야 합니다.
  • hasAll: 콤마로 구분된 Label 리스트로, PR은 이 리스트 모두 포함해야 합니다.
  • hasNone: 콤마로 구분된 Label 리스트로, PR은 이 리스트중 그 어떤 것도 포함해서는 안됩니다.
  • hasNotAll: 콤마로 구분된 Label 리스트로, PR은 이 리스트 모두를 포함해서는 안됩니다.

이번 블로그 포스트에서는 hasSome 조건을 사용하였습니다.

hasSome: breaking change,feature,bug,style,refactor,test,chore,docs,ci,dependencies

조건에 포함된 Label들은 Release notes 자동화하기 위해 필요한 리스트입니다. 자세한 내용은 다음 링크를 참고하시기 바랍니다.

PR Labels CheckerGitHub Actions에서 Pull requestLabel을 검사하기 위해 GitHub Token을 사용합니다. 따라서 다음과 같이 GITHUB_TOKEN을 설정해야 합니다.

githubToken: $

Release Drafter

저는 Release notes의 자동화를 위해 Release Drafter를 사용하고 있습니다. Release DrafterPull requestLabels를 사용하여 Release notes를 자동으로 작성합니다. 또한, Pull request의 제목을 보고 자동으로 Labels를 설정하는 기능도 가지고 있습니다.

그래서 Pull requestLabels가 중요하며, Release Drafter가 자동으로 설정해 주지만, 이를 확실하게 하기 위해 PR Labels Checker를 사용하여 Pull requestLabels를 다시 한번 검사하고 있습니다.

이를 위한 GitHub Actions와 다음과 같습니다.

name: Release Drafter

on:
  push:
    branches:
      - main
  pull_request:
    types:
      - opened
      - reopened
      - synchronize

permissions:
  contents: read

jobs:
  update_release_draft:
    permissions:
      contents: write
      pull-requests: write
      checks: write
    runs-on: ubuntu-latest
    steps:
      - uses: release-drafter/release-drafter@v5
        env:
          GITHUB_TOKEN: $
      - uses: danielchabr/[email protected]
        with:
          hasSome: breaking change,feature,bug,style,refactor,test,chore,docs,ci,dependencies
          githubToken: $

Release Drafter를 사용하여 Pull request에 자동으로 Labels를 설정하고, 자동으로 설정된 Pull requestLabelsPR Labels Checker를 사용하여 다시 한번 검사하도록 했습니다.

Release Drafter에 관한 자세한 내용은 다음 링크를 참고하시기 바랍니다.

완료

이것으로 GitHub ActionsPR Labels Checker를 사용하여 Pull requestLabels를 검사하는 방법에 대해서 알아보았습니다.

Pull requestLabels를 사용하여 관리하는 경우나, 저처럼 Release notes를 자동화하기 위해 Release Drafter를 사용하는 분들은 PR Labels Checker 도입을 고려해 보시기 바랍니다.

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

앱 홍보

책 홍보

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

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

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