들어가며
지라를 처음 사용하게 되면서, 커밋 메시지에 지라 이슈가 항상 붙어야하는데, 자꾸 까먹어서 커밋 메시지를 다시 수정하는 일이 잦아다. 그리고 기존에 우리 프로젝트에서 코드 자동 포맷팅 (Spotless)도 사용하고 있었기에 이를 하나로 통합하여 관리해도 괜찮겠다는 생각이 들었다.
기존 상황 : Spotless + Pre-Commit Hook
이전에 작성한 글에서는 커밋 직전에 Spotless를 자동 실행하도록 pre-commit Hook을 추가해두었다. 그리고 이번에는 이 코드 포맷팅과 더불어 커밋 메시지에 지라 키 이슈를 자동으로 붙여주는 작업을 해보려고 한다.
2025.07.21 - [Tech] - [Git] Spotless + Pre-Commit로 Git Hooks 활용하기
[Git] Spotless + Pre-Commit로 Git Hooks 활용하기
들어가며 프로젝트를 진행하다 보면 코드 컨벤션을 정하고 팀원 모두가 잘 지키기로 약속하지만, 막상 개발하다 보면 깜빡하거나, 다른 스타일로 작성된 코드가 커밋되는 경우가 생긴다. 이런
erika0915.tistory.com
Husky란 ?
Husky는 Node.js 기반의 Gti Hook 관리 도구이다.
기본적으로 Git은 `.git/hooks` 폴더에 Hook 스크립트를 두어야하는데,
- 실행 권한 문제 (OS별 차이)
- 팀원이 클론 시 Hook 파일 누락
과 같은 문제가 생기기도 한다고 한다.
그것도 그렇고 pre-commit 과 prepare-commit-msg를 둘 다 작성하여 관리하고자 했더니 Husky로 관리하는 것이 더 적절하다고 생각되었다.
Husky는 `.husky`폴더에 Hook 파일을 작성한 다음 `npm run prepare` 시 자동 연결이 된다.
Jira 이슈 키 자동 삽입
브랜치명에서 Jira 이슈 키 (ex. `SCRUM-43`)를 추출하고 커밋 메시지 앞에 자동으로 붙여주는 스크립트이다. `.husky/prepare-commit-msg` 에 작성해준다.
#!/bin/sh
BRANCH_NAME=$(git symbolic-ref --short HEAD)
# develop 브랜치에서는 커밋 메시지 자동 삽입 생략
if [ "$BRANCH_NAME" = "develop" ]; then
exit 0
fi
MSG_FILE=$1
ISSUE_KEY=$(echo "$BRANCH_NAME" | grep -oE '[A-Z]+-[0-9]+')
if [ -n "$ISSUE_KEY" ] && ! grep -q "$ISSUE_KEY" "$MSG_FILE"; then
sed -i.bak -e "1s/^/[$ISSUE_KEY] /" "$MSG_FILE"
fi
코드에 대해서 보면, 현재 브랜치명을 가져온 후 브랜치면에서 Jira 이슈 키를 추출한다.
정규식 `[A-Z]+-[0-9]+` 로 `SCRUM-43` 과 같은 문자열을 추출한다. 그리고 커밋 메시지 첫 줄 맨 앞에 `[SCRUM-43]` 추가한다.
그리고
기존의 pre-commit Hook을 Husky의 pre-commit Hook으로 옮겼다.

적용 방법
1) 최초 1회 실행 (세팅)
로컬에서 다음 명령어를 실행해주면 된다.
npm install
npm run prepare
2) 이후 평소 작업할 때
기존처럼 커밋 메시지만 작성하면 된다.
git commit -m "Feat: 로그인 기능 추가"
자동으로 브랜치명 `(feat/SCRUM-45-login`) 에서 Jira 이슈 키를 추출하여 커밋 메시지에 다음과 같이 붙여준다.
[SCRUM-43] Feat: 로그인 기능 추가
효과
- 코드 스타일 준수 : Spotless 자동 실행
- 커밋 메시지 규칙 준수 : Jira 이슈 키 자동 삽입
- 관리 단순화 : Husky로 Hook 일원화
참고
인텔리제이에서 `npm` 명령어를 사용하려면 Node.js 설치가 필요합니다 .. !!
프로젝트에서 Github와 Jira 함께 사용하기 (5) - Husky로 Jira 커밋 메시지 작성하기
지난 포스트에서 Github+Jira를 연결하고 Issue까지 연동하는 작업을 완료했다.아래 사진 상으로 1, 5를 자동화한 셈인데 여기에 3, 4번도 개선할 수 있는 방법이 있을까 생각하던 중Husky를 이용하여
lamerry.tistory.com
'Tech' 카테고리의 다른 글
| [Github] CodeRabbit을 활용한 PR 코드 리뷰 (2) | 2025.08.05 |
|---|---|
| [Github] 깃허브 이슈, PR 템플릿 등록하기 (6) | 2025.08.03 |
| [Github] Github Labels 커스텀 한 번에 등록하기 (3) | 2025.08.03 |
| [Git] Spotless + Pre-Commit로 Git Hooks 활용하기 (0) | 2025.07.21 |
| [Jira] 지라 첫 사용기 (4) | 2025.07.21 |
