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가 올바르게 추가되었습니다!!
'DevOps > 깃허브' 카테고리의 다른 글
[Github Actions] Chat GPT(Open AI)로 코드리뷰 자동화 하기 (0) | 2024.01.26 |
---|---|
[Github Actions] React 프로젝트 AWS S3, CloudFront 자동배포 하기 (0) | 2024.01.25 |
[Github] Branch Protection Rule를 설정하기 (0) | 2024.01.19 |
[Github] gitignore가 적용이 안될 때 (0) | 2024.01.17 |