
프론트엔드 스터디를 하면서 우리가 함께 공부하고, 작성했던 내용들을 기록하는 목적으로 우리 스터디만의 "테크 블로그"를 개발하기로 하였다.
3명이서 개발하기 때문에 회의를 거쳐 협업을 위한 여러 규칙들을 적용하였다. (prettier, eslint, convention 등)
우리는 작업관리를 Github의 Issue로 하기로 하였다. 공통된 Issue를 관리하기 위해서 템플릿도 만들고 하면서 이때!! 불편함을 발견하였다.
⚠️
Label을 생성하기에 반복된 클릭과 번거로움이 발생

다음은 요즘 내가 관심을 가지고 사용하고있는 gemin-cli 의 repository 이다.
사진의 모습과 같이 Github에서 Issue를 Label을 달아 효율적으로 분류하고, 관리할 수 있도록 제공해준다. 그래서 협업을 할때, 그리고 많은 오픈소스들에서 이렇게 Label을 많이 활용하는 것을 볼 수 있다.
우리도 Issue를 기능 구현이나, 버그 등 작업을 직관적으로 관리하기 위해 자연스레 Label을 만들어 사용하기로했다.
Github에서 기본적으로 제공해주는 Label 들이 있기는 하지만, 우리 팀에 맞게 만들고 싶었다. 그리고 조금이나마 더 직관성을 높이고 싶어서 귀여운 이모지와 색상을 적용하고 싶었다.

이렇게 Github Issue tab에서 오른쪽 사이드에서 Label을 설정할 수 있는 탭을 발견할 수 있다.
입력하는 내용은 단순하여 만들어낼 Label의 개수가 적다면 그냥 해도 상관이 없지만, 개수가 많아지면 이게 상당히 귀찮은 작업이 되어버린다.
Github Repo ➡️ Label 설정 페이지 ➡️
New Label버튼 클릭 ➡️ 내용 입력 ➡️Create label클릭
여기서 혹시나 수정사항이 생기면 똑같은 작업을 반복하는 등....설정 페이지에 접속해도 label 하나 생성하는 버튼 클릭을 최소 2번씩이나 하게 되고, 10개를 만든다고하면 20번 이상의 클릭이 이루어져야 한다.
별거 아니지만 개발 외의 작업에서 아~~~주 상당히 귀찮아진다..
나는 Github Action을 활용해서 자동화를 해본 경험이 몇번 있어서 이걸 활용해보고 싶었다.

역쉬~~ Github Action는 무궁무진하다!!! 먼저 Github Market에 검색해보니 이미 많은 자동화 도구들이 있었다.
AI를 통해 내용을 분석하여 자동으로 Label을 달아주는 것도 있었따..대박
나는 이번에 만든 label 들을 가능한 다른 작업을 할 때도 사용하고 싶었다. 폴더를 기준으로 label을 달아주는 도구도 있고, AI를 활용한 것도 있었지만, 우리 팀에서 사용할 label들을 구분할 기준이 조금 애매했다.
그리고 무엇보다 여러 방법들을 사용해보고 싶었고, 더더 멋있고 개쩌는 자동화방법을 일단 뒤로하고, 가장 간단한 방법부터 적용해보고자 한다.
그래서 GitHub Labeler 를 선택하기로 했다.

이 Action을 통한 자동화는 사진의 설명과 같이 "Label을 Github에서 생성,삭제, 업데이트 등을 Code로 편리하게 관리" 해주는 도구이다.
이걸 통해 내가 유용하게 사용하고, 자주 쓰는 Label 들을 파일로 관리 할 수 있다는 장점이 있다.
사용방법은 아주 간단하다. 먼저 label을 구성할 파일을 만들어보자.
사용할 Action에서는 label들을 YAML 파일로 관리하도록 한다. 다음과 같이 작성한다.
.github/labels.yml
# 📌 기능 관련
- name: "✨ feature"
color: "1d76db"
description: "새로운 기능 요청 또는 구현"
- name: "🛠️ enhancement"
color: "0052cc"
description: "기존 기능의 개선 또는 리팩토링"
- name: "🧪 experiment"
color: "b60205"
description: "실험적 기능 또는 테스트 구현"
# ... 이하 생략
Label에 들어갈 정보들을 아주 직관적인 내용으로 작성할 수 있다.
하나하나 눌러서 생성하던 수동 방식과 다르게 Code 를 작성하듯 이렇게 작성하니 단순 반복 없이 관리하기가 너무 편리한 것 같다.
다음에는 다음과 같이 적용할 레포지토리에 workflow 파일을 생성해준다.
(Github Action의 YAML 파일의 설명은 이번 글에서는 생략하고 설명한다.)
.github/workflow/create-label.yml
name: Sync Labels
on:
push:
branches:
- main
paths:
- .github/labels.yml
- .github/workflows/create-labels.yml
pull_request:
branches:
- main
paths:
- .github/labels.yml
- .github/workflows/create-labels.yml
permissions:
issues: write
jobs:
sync-labels:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Run Labeler Action
uses: crazy-max/ghaction-github-labeler@v5
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
yaml_file: .github/labels.yml
작업 내용은 아주 간단하다. 위에서 작성한 labels.yml 파일에 push 나 PR로 변경사항이 발생하면 ghaction-github-labeler 를 통해 작업하고 있는 레포지토리에 Label을 구성해준다.
여기서 주의할 부부은 permissions 부분을 꼭 넣어주어야 Action이 잘 동작한다.

위 내용들을 잘 구성하고 레포에 올리고 나면 다음과 같이 Action이 잘 돌아가는 것을 확인할 수 있다. 기존에 있던 기본 내용들을 삭제하고, labels.yml 안에 작성된 laebel 들만 생성하고 있는 모습을 볼 수 있다.
이렇게 label 생성이 Action 으로 동작할 수 있는 이유는 Github에서는 대부분의 작업들을 gh CLI 를 통해 명령어를 통해 수행할 수 있도록 제공하고 있다.
gh CLI를 사용하면 Github의 거의 모든 작업을 수행할 수 있기 때문에 Github-Action 을 통한 작업이 가능한 것이다.
Action 동작이 끝나고 나서 Label 목록에 들어가보면 아래와 같이 잘 적용되어있는 것을 확인할 수 있다.

단순히 귀찮음을 해결하고 싶었던 마음이 "자동화" 의 욕심을 꿈틀 꿈틀 움직이게 만들었고, 오랜만에 Github-Action 을 다루며 정말 많은 도구들이 있다는 것도 새삼 많이 느낄 수 있었다.
이번에는 "관리" 에만 자동화를 시도했다면! 다음에는 앞서 찾아보았던 AI를 활용하는 자동 라벨링 도구를 시도해봐야겠다.
https://docs.github.com/ko/actions
https://github.com/marketplace?type=actions