본문 바로가기
🧑🏻‍💻 Develop/GitHub

Pull Requests 에 자동으로 Labels 적용하기 (1) - Auto Labeler

by dev-jaesoon 2022. 9. 26.

GitHub Labels 이란?

GitHub Label 은 Pull Requests (이하 PR) 또는 Issues 에서 카테고리를 분류하기 위해 사용된다. GitHub 에서도 이미 기본적으로 9개의 Labels 를 제공하고 있다.

 

GitHub Labels

팀 프로젝트를 하고 있다면 여러 명의 팀원이 각자의 작업 내용을 여러 개의 PR 을 만들어 병합할텐데, 이 때 Labels 을 사용한다면 보다 효율적으로 작업 내용(PR)들을 관리할 수 있다.

 

Auto Labeler 적용

GitHub actions 에 Auto Labeler plugins 을 적용하여 사용할 것이다. 그 중에서도 Auto Labeler 를 사용하여 PR 의 Title 이나 Description 에 특정 내용이 추가 되었을 때 GitHub actions 가 작동하도록 할 것이다. 먼저 일반적인 github actions 과 똑같이 YAML 파일을 생성해준다. (기본적인 사용법은 Document 에 모두 작성되어 있다.)

자동으로 labeling 하기 위한 GitHub Actions Plugin

 

  • .github/workflows/labeler.yml : Auto Labeler 가 실행될 조건에 대한 workflows 를 작성
  • .github/labeler.yml : 자동으로 labeling 이 될 기준에 대하여 작성

 

실행 조건 정의

.github/workflows/labeler.yml

릴리즈를 위해 main 브랜치에 대한 PR가 opened 또는 reopened 되었을 때, 자동으로 라벨링되도록 하기 위해 아래와 같이 작성한다.

name: Auto Labeler
on:
  pull_request:
    types: [opened, reopened]
    branches:
      - main

그리고  jobs 를 아래와 같이 작성하여 Auto Labeler 를 설정해준다. 이때 환경 변수인 GITHUB_TOKEN 은 자동으로 생성되기 때문에 별도 설정은 불필요하다.

jobs:
  labeler:
    runs-on: ubuntu-latest
    steps:
      - name: Check Labels
        id: labeler
        uses: jimschubert/labeler-action@v2
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/labeler.yml

크게 live release PR 와 Refactoring PR 2가지에 대해서 Auto Labeler 가 적용되도록 하려고 한다. 아래와 같이 작성하면 되는데, comment 는 labeling 시 자동으로 작성될 문구, labels 는 특정 문구가 Title 이나 Description 에 있을 경우 자동으로 적용될 Label  을 정의한 것으로 Key 가 적용될 labels, Values 가 식별할 문구가 된다. 

comment: |
  🏷 I have applied any labels matching special text in your title and description.

labels:
  "🌏 live":
    - '\blive release\b'
  "🛠 refactoring":
    - '\bRefactoring\b'

여러가지를 테스트 진행해보았는데, 대/소문자 구분을 하는 정규표현식(/i)이 적용이 안 되었기 때문에, 필요하다면 경우의 수 별로 따로 적어줄 필요가 있을 듯 하다. 또한, 해당 파일이 기준 브랜치 (main 또는 master) 에 적용되지 않으면, 제대로 작동하지 않는 문제가 있었다.

 

실행 결과 확인

PR을 생성하고 일정시간을 기다리면 아래와 같이 자동으로 github-actions(bot) 에 의해 labeling 이 되는 것을 확인할 수 있다. 그리고 각 label 을 클릭하여 해당 label 이 붙은 PR 만 모아 검색 결과를 확인할 수도 있다.

자동으로 labeling 이 되어, 여러개의 PR이 복잡하게 있어도 쉽게 구분할 수 있다

 

이번에 사용해본 Auto labeler 는 아쉬운 부분들이 있었기 때문에, 그 다음에는 이어서는 PR의 변경 내용을 확인하고, 그에 따라 자동으로 labeling 해주는 Plugin 을 사용해보겠다.

댓글