DevOps/깃허브

[Github] Jira 티켓번호 커밋 메세지 자동화 하기

밥빵 2024. 1. 31. 23:08

Jira 티켓번호를 커밋 메세지에 자동으로 추가하기


 

관련 포스팅

[JIRA] JIRA-Github 칸반보드 워크플로우 자동화

 


개요

프로젝트에서 Jira 티켓을 사용하여 깃허브 커밋브랜치 이력들에 대해 관리하고 있습니다.

Jira에서 티켓을 발급하고 깃허브에서 티켓번호가 포함되어 있는 브랜치 생성을 하면
해당 브랜치에 대한 이력관리,
커밋 메세지에 티켓번호를 포함한 커밋 메세지를 작성하면
해당 커밋에 대한 이력관리를 할 수 있습니다.


하지만 커밋 할 때마다 매번 티켓 번호를 적는 일은 너무 귀찮습니다..
티켓번호나 양식을 잘못 작성하는 경우도 많이 있습니다 ㅠㅠ

그래서 Branch명에 작성되어 있는 티켓번호를 파싱하여 커밋할 때 커밋메시지 맨 앞
티켓번호를 prefix를 추가해주는 커밋메시지 자동화를 진행해보겠습니다.

 




커밋 메세지 자동화

브랜치에서 티켓번호를 파싱한 후 커밋메세지에 [티켓번호]를 prefix로 추가하기

 

예시) 
브랜치명 : DOK-###/기능개발

/ 앞 부분을 파싱한다.

-> 커밋메세지명 : [DOK-###] feat : 로그인 화면 개발

 

 

레포지토리 폴더에서 .git/hooks 폴더 접근

 .git/hooks 폴더에서 접근합니다. (숨김폴더)
맥북 : command + shift + .

 

Git hooks 
Git 리포지토리에서 특정 이벤트가 발생할 때마다 자동으로 실행되는 스크립트

 

 

prepare-commit-msg 수정

prepare-commit-msg을 수정합니다.

 

  • prepare-commit-msg : pre-commit과 비슷하지만 커밋메세지를 만들고 나서 실행
  • pre-commit: 커밋하기전에 실행
  • post-commit: 커밋한 뒤에 실행
  • pre-push: 커밋을 원격지로 push하기전에 실행

참고링크

#!/bin/sh  
# .git/hooks/prepare-commit-msg  
#  
# Automatically add branch name and branch description to every commit message except merge commit.  
# https://stackoverflow.com/a/18739064  
#  
  
COMMIT_MESSAGE_FILE_PATH=$1  
  
# merge commit에 대해서는 prefix를 생성하지 않습니다.  

MERGE=$(grep -c -i 'merge' < "$COMMIT_MESSAGE_FILE_PATH")  
if [ "$MERGE" != "0" ] ; then  
  exit 0  
fi  

# 현재 체크아웃된 Git 브랜치의 이름을 추출하여 PREFIX 변수에 저장

# git branch | grep '\*'는 현재 선택된 브랜치를 찾고, 
# sed 's/\* //'는 브랜치 이름 앞의 '* ' 문자를 제거합니다. 
# sed 's/\([^/]*\).*/\1/' 명령은 브랜치 이름에서 첫 번째 '/' 문자 전까지의 문자열만 추출
# 이렇게 해서 얻은 문자열이 접두사로 사용됩니다.
PREFIX=$(git branch | grep '\*' | sed 's/\* //' | sed 's/\([^/]*\).*/\1/')

echo "[$PREFIX] $(cat "$COMMIT_MESSAGE_FILE_PATH")" > "$COMMIT_MESSAGE_FILE_PATH"

 

참고링크

 

prepare-commit-msg .sample 이름 수정

prepare-commit-msg.sample 파일 이름을 수정합니다.

prepare-commit-msg.sample   - >   prepare-commit-msg으로 변경해주세요!!

 

 

 

파일 권한 부여

실행 권한 부여
chmod +x prepare-commit-msg

 

 

이제 브랜치에서 커밋 메시지를 작성해 보겠습니다.

 

 

 

Prefix가 올바르게 추가되었습니다!!