Husky와 jira-prepare-commit-msg로 Jira 이슈 번호 자동 추가하기

    코드 리뷰와 이슈 추적을 위해서는 커밋 메시지에 Jira 이슈 번호를 작성해야 합니다. 하지만 매번 수동으로 이슈 번호를 입력하다가 실수를 하기도 하였습니다. Husky와 jira-prepare-commit-msg를 사용하면 브랜치에 있는 이슈 이름을 자동으로 커밋 메시지에 작성되게끔 할 수 있습니다.

    패키지 설치

    npm install husky jira-prepare-commit-msg --save-dev
    
    # Husky 초기화
    npx husky init

    설정하기

    1. package.json 수정

    "jira-prepare-commit-msg": {
        "jiraTicketPattern": "([A-Z0-9]+-\\d+)",
        "allowEmptyCommitMessage": false,
        "ignoredBranchesPattern": "^(master|main|dev|develop|development|release)$",
        "ignoreBranchesMissingTickets": false
    }
    

    jira-prepare-commit-msg 가 JIRA이슈 번호를 검색할 수 있도록 package.json 에 위와 같은 내용을 추가했습니다.

    jiraTicketPattern가 브랜치 이름에서 JIRA 이슈 번호를 추출하는 정규식 규칙입니다. 각자 상황에 맞춰 변경해 사용하시면 됩니다. 필자의 경우 브랜치 이름을 다음과 같이 작성합니다.

    • 브랜치 이름 : (AIR23-12) Auth
    • 정규식 통과 후 : AIR23-12

    master, main, dev, develop등 JIRA 이슈 번호가 필요 없는 브랜치는 ignoreBranchesPattern에 작성했습니다.

    2. Husky 훅 생성

    1. 프로젝트 폴더에 .husky 폴더가 생성되어 있는지 확인합니다. 없다면 npx husky init 을 다시 실행해 주세요.
    2. 해당 폴더에 prepare-commit-msg 라는 이름의 파일을 생성합니다.
    3. 내용을 아래와 같이 작성합니다.
    npx jira-prepare-commit-msg $1

    사용방법

    설정을 마쳤다면, 새 브랜치를 정규식 규칙에 맞게 이슈 번호를 포함해 생성한 후, 테스트 커밋을 작성해 보세요.
    커밋을 마친 후 git log를 확인했을 때 이슈 번호가 추가되었다면 Hook이 제대로 설정된 겁니다.

    Husky와 jira-prepare-commit-msg 를 통해 자동으로 커밋 메시지를 작성한 모습

    번외) 커밋 전 타입 체크

    Hook을 이용하면 깃 동작 전/후로 여러 추가 동작을 수행하게 만들 수 있다. 필자는 타입스크립트에서 타입을 대충 쓰다가 빌드 직전 하루 종일 타입만 고치러 다닌 기억이 있다. 이런 사고를 미연에 방지하기 위해 커밋 전 항상 타입 체크를 통과해야 하도록 만들어보자.

    1. .husky 폴더 내에 pre-commit 파일을 추가한다.
    2. 프로젝트에서 사용하는 테스트 실행 명령을 작성한다.
    npm run check

    이제 커밋하기 전 타입 체크에 실패하면 커밋을 할 수 없다. 물론 잠시 hook을 비활성화 하고 커밋할 수 있지만, 그럴 경우 Pull request 유효성 검사에서 실패해 결국 develop이나 main 브랜치로는 불완전한 코드가 갈 수 없다.


    게시됨

    카테고리

    작성자

    태그:

    Obtuse의 테크 블로그 더 알아보기

    이 블로그에 새 글이 나올 때 마다 이메일로 알림을 받아보는 건 어때요?


    ※구독 버튼을 클릭하면 obtuse.kr의 개인정보 처리방침의 광고성 정보 수신에 동의하는 것으로 간주합니다.

    댓글

    “Husky와 jira-prepare-commit-msg로 Jira 이슈 번호 자동 추가하기” 에 하나의 답글

    1. ㅇㅈㅎ 아바타
      ㅇㅈㅎ

      좋은 글 감사합니다. 제가 백엔드 코드를 서버에 올릴려는데 서버 컨테이너와, DB 컨테이너를 분리하여 관리하려합니다. 이 때 오브투스님은 두 컨테이너를 어떻게 통신시키는 지 궁금합니다.

    답글 남기기

    이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

    이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.