프로젝트를 진행하면서 Git Flow 전략을 토대로 개발을 하기 위해 각 Issue 별로 develop 브랜치에서 feature 브랜치를 따서 사용했습니다.
매번 Issue 생성 → 브랜치 생성의 과정을 반복하다 보니 번거롭다는 생각이 들어 자동화해 보자는 생각에 구글링 하던 중 Jira와 Github Action을 찾게 되었습니다.
Jira와 Github을 연동하면 Jira Issue에서 바로 Github branch를 생성하고 Issue와 관련된 코드 변경 사항을 추적할 수 있다고 합니다.

그런데 최대 10명의 사용자와 2GB 저장소 제공이라는 제한 사항이 있네요🤔
저의 경우 주로 소규모 프로젝트를 진행해하기 때문에, 복잡한 프로젝트 관리보다는 간단한 이슈 관리 목적으로 Create Issue Branch(Github Action)을 사용하게 되었습니다.
Create Issue Branch
- Create Issue Branch는 Issue 생성 시, BranchName으로 정해진 문법에 따라 자동으로 신규 Branch를 생성해 주는 Github Action입니다.
- Create Issue Branch를 이용하면, PR(Pull Request) 후 merge 진행 시 자동 Issue close 역시 가능합니다.
설치 방법은 아래 링크를 참조했습니다.
Create Issue Branch - GitHub Marketplace
GitHub action that creates a new branch after assigning an issue
github.com
설치 방법은 아래 두 가지 있다고 하네요
1️⃣ repository에 Create Issue Branch app 설치하기
2️⃣ Github Action을 통해 사용하기 (YAML config에 워크플로우를 제어할 코드를 작성)
저는 2번을 적용해 보겠습니다.
issue-branch.yml 파일 추가 및 적용
name: Create Feature Branch on Issue Creation
on:
issues:
types: [opened]
jobs:
create-branch:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
token: ${{ secrets.TOKEN }}
ref: feature
- name: Create feature branch
env:
ISSUE_NUMBER: ${{ github.event.issue.number }}
ISSUE_TITLE: ${{ github.event.issue.title }}
run: |
# 브랜치 이름 생성 (특수문자 및 공백 처리)
ISSUE_TITLE_CLEAN="${ISSUE_TITLE// /-}" # 공백을 '-'로 대체
ISSUE_TITLE_CLEAN="${ISSUE_TITLE_CLEAN//[^a-zA-Z0-9가-힣_-]/}" # 영문, 한글, 숫자, '_'만 남김
BRANCH_NAME="#${ISSUE_NUMBER}_${ISSUE_TITLE_CLEAN}"
# 'feature' 브랜치를 기준으로 새 브랜치 생성 및 푸시
git checkout feature
git pull origin feature # 최신 상태로 업데이트
git checkout -b "$BRANCH_NAME"
git push origin "$BRANCH_NAME"
- name : Create Feature Branch on Issue Creation을 워크플로우 이름으로 설정
- on.issues.types : 새로운 이슈(opened)가 생성될 때 워크플로우를 실행하도록 트리거 설정
- ISSUE_NUMBER : 생성된 이슈 번호를 저장
- ISSUE_TITLE : 생성된 이슈 제목을 저장
- BRANCH_NAME : [이슈 번호]_[필터링 된 이슈 제목] 형태로 브랜치 이름을 생성
(ex. 이슈 테스트 → #1_이슈-테스트) - git checkout feature & git pull origin featrue : feature 브랜치로 이동 후 최신 상태로 업데이트
- git checkout -b "$BRANCH_NAME" : 생성한 브랜치 이름으로 브랜치 생성
- git push origin "$BRANCH_NAME" : 원격 저장소에 생성한 브랜치를 푸시(push)
이제 적용도 끝났으니 직접 이슈를 생성해 보면서 테스트해 보겠습니다!


이슈를 생성했지만, 브랜치는 생성되지 않았습니다..🤔
수 차례 시도에도 이슈만 생성되고 브랜치는 생성되지 않는데 뭐가 문제일까요😭😭😭😭
포기하는 마음으로 Actions 탭을 확인해 보니, 이슈 생성에 대한 에러를 확인할 수 있었습니다.

with:
token: ${{ secrets.TOKEN }}
token으로 secrets.TOKEN을 사용했는데, 정작 TOKEN을 설정해주지 않았네요.
Token은 GitHub Personal Access Token 설정 페이지에서 생성할 수 있습니다.
TOKEN이라는 이름으로 토큰을 생성하고 repository에 추가해 보겠습니다.


TOKEN 적용도 끝났으니 다시 이슈 생성 테스트를 해보겠습니다👍


이슈를 생성하니 [이슈 번호]_[이슈 타이틀] 형태로 브랜치가 잘 생성되었습니다.
앞으로 진행할 팀 프로젝트에 적용하면 매번 이슈에 해당하는 브랜치를 직접 생성하는 번거로움이 사라지겠네요✨
'Git' 카테고리의 다른 글
[Git] Pull Request에 Template 자동 적용하기 (feat. 이슈 close) (1) | 2025.01.16 |
---|---|
[Git] Git Branch Merge 방법 (2) | 2024.09.14 |
[Git] Git Branch 전략 - Git Flow vs GitHub Flow (3) | 2024.09.14 |