Create Issue Branch로 이슈 브랜치를 자동으로 만들어보자
깃허브는 Issue의 Development 항목을 통해서 이슈 브랜치를 만들 수 있는 기능을 제공한다.
하지만.... 이게 좀 여러모로 불편한 점들이 있다.
prefix 설정이라거나, 이슈 이름으로 그대로 브랜치를 만들어서 이름을 영어로 적어야한다거나...등등
그래서 오늘은 깃허브 액션 맛보기 겸 Create Issue Branch를 통해서 이슈에 브랜치를 자동으로 생성해보려한다.
Create Issue Branch 왜 쓰나요?
앞서 말했듯, 깃허브에서는 이미 이슈를 대상으로 브랜치를 만들 수 있는 기능을 제공한다.
하지만 이슈 이름을 그대로 브랜치로 만들어버리기 때문에
특정 규칙으로 브랜치 이름을 만들고 싶다면 커스텀 하는 것이 불가능하다.
하지만 Create Issue Branch를 사용한다면 이 과정을 어느 정도 커스텀할 수 있다.
Create Issue Branch는 기본적으로 이슈에 Assignee가 할당되면 브랜치를 생성하는데
이 브랜치의 이름을 특정 규칙에 따라서 정한다거나 이슈 라벨에 따라서 Prefix를 적는다거나,
아니면 브랜치가 할당되면 자동으로 PR을 생성한다거나 등등등등 다양한 설정이 가능하다.
만약 깃허브에서 제공하는 이슈 브랜치 생성 기능에 답답함을 느꼈다면,
Create Issue Branch를 사용해볼만 할 것이다.
적용하기
# .github/workflows/create-issue-branch.yml
on:
# The issues event below is only needed for the default (auto) mode,
# you can remove it otherwise
issues:
types: [ assigned ]
# The issue_comment event below is only needed for the ChatOps mode,
# you can remove it otherwise
issue_comment:
types: [ created ]
pull_request:
types: [ closed ]
jobs:
create_issue_branch_job:
runs-on: ubuntu-latest
steps:
- name: Create Issue Branch
uses: robvanderleek/create-issue-branch@main
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
프로젝트 최상단에 .github 폴더를 만들고 workflows 폴더까지 만든 다음에
내부에 yml 파일을 만들어서 위 코드를 붙여 넣어준다.
그 다음 레포지토리의 Settings - (사이드바의) Actions - General로 가서 하단에 Workflow permissions를 설정해준다.
Create Issue Branch가 작동하기 위해서는 레포지토리 내에 쓰기 권한이 있어야하기 때문에
Read and write permissions를 체크해준 후 저장한다.
자동으로 PR을 여는 기능까지 추가하고 싶다면
하단에 Allow Github Actions to create and approve pull requests도 체크해준다.
그러면.......끝났다.......😮
이 상태로도 이슈에 Assignee가 할당되면 workflow가 작동되면서 브랜치를 만들 것이다.
그러나 이 상태로는 Create Issue Branch의 기본 설정대로만 동작할 뿐이다.
커스텀을 해보자.
설정하기
Create Issue Branch를 설정하는 방법은 간단하다.
.github 파일 내에 issue-branch.yml 파일을 생성해 설정을 작성해주면 된다.
# .github/issue-branch.yml
branchName: "chistock-#${issue.number}"
autoCloseIssue: true
openDraftPR: true
copyIssueLabelsToPR: true
copyIssueAssigneeToPR: true
branches:
- label: 🐛 Bug
prefix: bugfix/
- label: 🩹 Simple Fix
prefix: bugfix/
- label: 🚨 HOTFIX
prefix: hotfix/
- label: 👷 CI
prefix: env/
- label: ⚙️ Setting
prefix: env/
- label: 💄 Design
prefix: feature/
- label: ✨ Feature
prefix: feature/
- label: ♻️ Refactor
prefix: feature/
- label: ✅ Test
prefix: feature/
- label: 📝 Document
prefix: docs/
나의 경우 브랜치 이름 설정과 이슈 라벨에 따른 prefix 설정, 그리고 PR에 관련된 추가적인 설정 몇 가지를 더 해주었다.
가능한 설정들을 보려면 홈페이지를 참조하자. 제공하는 기능도 많고 이해하기도 어렵지 않다.
(DraftPR의 경우 개인 계정에서 public 레포지토리에서만 생성 가능하니 주의)
마무리
이제 issue에 Assignee가 할당되면, Create Issue Branch가 작동해서 브랜치를 만들고 위와 같이 알려줄 것이다.
끝!
Reference
'Frontend > 기타' 카테고리의 다른 글
Chromatic으로 시각적 회귀 테스트 구축하기 (0) | 2023.09.13 |
---|---|
Storybook으로 컴포넌트 문서화하기 (1) | 2023.09.06 |
prettier로 import 정렬하기 (0) | 2023.09.01 |
husky로 git hook 만들기(with lint-staged, git-cz) (0) | 2023.08.25 |
Next.js와 Storybook에 SVGR 설정하기 (0) | 2023.08.06 |