Git Hook를 활용하여 자동화하자!

Murjune·2024년 3월 22일
0
post-thumbnail

우테코나 프로젝트를 하면서 ktlintUnit Test 명령어를 기입한 후 PR을 올리는 것을 자주 까먹었다..

  • Lint, test 해주는 명령어
 ./gradlew ktlintCheck ---- .editorConfig 를 기반으로 lint check
 ./gradlew clean test --- Unit test

만약, Github Action 과 같은 CI/CD tool을 PR을 열 때 설정해 두었다면 이를 추후 확인할 수 있다.

그러나, 내 컴퓨터에서 명령어를 돌리는 것은 30초도 안걸리는데
Github Action 의 경우에는 상대적으로 엄청 오래 걸린다..

🤔 push 하기 전에 자동으로 lint check 해주는 방법이 없을까??

Git Hooks

Git Hook란 Git과 관련된 이벤트가 발생했을 때 특정한 스크립트를 실행하는 기능이다.
이 아티클에서는 테스트, 린트 check 자동화하는 방법만 공유할 것이기에
자세한 내용은 공식문서를 참고하길 바란다! 😸

나는 push 를 하기 전에 아래 명령어를 자동으로 실행시키고 싶다.

 ./gradlew ktlintCheck 
 ./gradlew clean test

이 때, 사용할 수 있는 후크가 클라이언트 후크중 하나인 pre-push 후크이다.

pre-push 후크는 git push 가 실행할 때 미리 설정해둔 스크립트를 동작시킨다.
이때, 만약 설정해둔 스크립트가 실패하면 push 를 중단시킨다!

그럼 어떻게 pre-push 후크를 설정할 수 있는지 확인해보자 💪

pre-push Hook 설정하는 방법

현재 path 를 안스 프로젝트 root 로 가정하겠다.

1) 아래 명령어를 cmd 창에 입력하여 hook 폴더로 이동한다.

cd .git/hook

2)pre-commit.sample 파일을 pre-commit.txt 로 확장자를 바꿔준다.

mv pre-commit pre-commit.sample
open .

3) pre-push.txt 폴더를 연 후 아래 내용 넣고 저장해준다.

#!/bin/sh
 set -e
 ######## RUN UNIT TEST HOOK START ########
 git stash -q --keep-index <=== 빼도 됨

 ./gradlew ktFormat
 ./gradlew test

 RESULT=$?

 git stash pop -q <=== 빼도 됨

 exit $RESULT
 ######## RUN UNIT TEST HOOK END ########
 

vim 을 활용하면 2,3 번 과정을 한 번에 할 수 있다~

4) 이제 다시 터미널로 돌아와 아래 명령어를 기입해준다

mv pre-commit.txt pre-commit
chmod +x .git/hooks/pre-commit

끝! 이제 pre-push hook를 설정했다 !

실제로 push를 해보니 잘 동작한다~

앞으로 lint check, test git hook 를 활용해서 자동화 시켜 놓자!
진짜 편하다 😄

commit 하기 전에 스크립트를 실행시키고 싶다면 pre-commit.sample 파일을 위 방법대로 수정해주면 된다 ㅎㅎ

profile
열심히 하겠슴니다:D

0개의 댓글

관련 채용 정보