paint-brush
Git Hooks로 DevOps 강화~에 의해@infinity
2,992 판독값
2,992 판독값

Git Hooks로 DevOps 강화

~에 의해 Rishabh Agarwal4m2023/09/07
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

DevOps는 개발 및 배포 프로세스를 단순화하려는 기업의 소프트웨어 개발 세계에서 필수적인 구성 요소가 되었습니다. 사용 가능한 여러 DevOps 기술 중에서 때때로 무시되지만 실제로 효과적인 기술이 있습니다. 그 핵심 기술은 다름 아닌 “Git Hooks”입니다.
featured image - Git Hooks로 DevOps 강화
Rishabh Agarwal HackerNoon profile picture

DevOps는 개발 및 배포 프로세스를 단순화하려는 기업의 소프트웨어 개발 세계에서 필수적인 구성 요소가 되었습니다. 사용 가능한 여러 DevOps 기술 중에서 때때로 무시되지만 실제로 효과적인 기술이 있습니다.


그 핵심 기술이 다름 아닌 “ Git Hooks” 입니다.


Git Hooks는 작업을 자동화하고, 코딩 표준을 적용하고, 지속적인 배포를 수행하고, 테스트를 실행하는 훌륭한 도구입니다.


Git Hooks를 사용하여 DevOps 관행을 혁신할 수 있는 방법을 살펴보겠습니다!

가장 먼저 해야 할 일... Hook이 무엇인가요?

먼저 공식적인 정의를 살펴보겠습니다.


후크는 git 실행의 특정 지점에서 작업을 트리거하기 위해 후크 디렉터리에 배치할 수 있는 프로그램입니다.


다행히도 이는 정말 간단한 정의입니다!


독자들이 정의에 대해 가질 수 있는 몇 가지 질문을 다루겠습니다.


Q) Hooks 디렉터리란 무엇인가요? 어디에 위치해 있나요?

후크 디렉터리는 Git이 실행할 실행 프로그램이나 후크가 포함된 Git 저장소의 디렉터리입니다. 기본적으로 후크 디렉터리는 $GIT_DIR/hooks 입니다. 사용자는 core.hooksPath 구성 변수를 사용하여 이를 구성할 수도 있습니다.


Q) Git의 실행 포인트는 무엇입니까?

Git 실행 지점은 후크를 실행할 수 있는 Git 워크플로의 단계입니다. 사전 커밋, 사후 커밋, 사전 푸시, 사후 수신, 사전 리베이스 및 사후 병합은 Git 실행 지점의 몇 가지 예입니다.


이 섹션을 요약하면 Git Hooks에 대해 다음과 같은 정의를 가질 수 있습니다.


Git은 코드 커밋, 푸시 또는 병합과 같은 특정 작업 전후에 "후크"라는 스크립트를 실행합니다. 이를 통해 작업을 자동화하고, 정책을 시행하고, 개발 프로세스 중에 코드베이스와 상호 작용할 수 있습니다. Git 후크는 Git 저장소의 .git/hooks 디렉터리 에 저장됩니다.

최초의 Git Hook 만들기!

모든 커밋 메시지에 "TASK*" 정규식을 적용하는 간단한 Git 후크를 구축해 보겠습니다.


새 디렉토리 git_hooks_tut 만들고 그 안에 새 git 저장소를 초기화하세요.


 ~/projects$ mkdir git_hooks_tut ~/projects$ cd git_hooks_tut ~/projects/git_hooks_tut$ git init Initialized empty Git repository


Hooks 디렉터리로 가서 그 내용을 조사해 보겠습니다.


 ~/projects/git_hooks_tut$ cd .git/hooks ~/projects/git_hooks_tut/.git/hooks$ ls applypatch-msg.sample pre-applypatch.sample pre-push.sample commit-msg.sample pre-commit.sample pre-rebase.sample fsmonitor-watchman.sample pre-merge-commit.sample pre-receive.sample post-update.sample prepare-commit-msg.sample update.sample


후크 디렉토리에는 몇 가지 샘플 스크립트가 함께 제공됩니다. .sample 확장자는 기본적으로 실행을 중지합니다. 후크를 "설치"하기 위해 해야 할 일은 .sample 확장자를 제거하는 것뿐입니다.


또는 새 스크립트로 처음부터 시작하는 경우 위에 나열된 파일 이름 중 하나와 일치하지만 .sample 확장자를 제외한 이름을 가진 새 파일을 추가할 수 있습니다.


우리의 사용 사례에서는 commit-msg 후크가 필요합니다. 계속해서 commit-msg 라는 새 스크립트를 작성하십시오.


 ~/projects/git_hooks_tut/.git/hooks$ touch commit-msg


commit-msg 스크립트에 커밋 메시지 패턴을 보장하는 논리를 추가해 보겠습니다.


 #!/bin/sh commit_msg_file=$1 commit_msg=$(cat "$commit_msg_file") # Check if the commit message starts with "TASK" if ! echo "$commit_msg" | grep -q "^TASK"; then echo "Commit message must start with 'TASK'" exit 1 fi


마지막으로 commit-msg 스크립트를 실행 가능하게 만듭니다. 실행할 수 없는 스크립트는 후크 디렉터리에 있더라도 git에서 건너뜁니다.


 ~/projects/git_hooks_tut/.git/hooks$ chmod +x commit-msg


그리고 그 설정으로 후크가 완성되었습니다! 이제 테스트해 보겠습니다.


이제 새 파일을 생성하고 커밋을 시도합니다. 먼저 잘못된 메시지 형식을 사용한 다음 유효한 메시지 형식을 사용합니다.


 ~/projects/git_hooks_tut/.git/hooks$ cd ../.. ~/projects/git_hooks_tut$ touch README ~/projects/git_hooks_tut$ ls README ~/projects/git_hooks_tut$ git add README ~/projects/git_hooks_tut$ git commit -m "Added Readme File" Commit message must start with 'TASK' ~/projects/git_hooks_tut$ git commit -m "TASK-0000: Added Readme File" [master (root-commit) 7f3648a] TASK-000: Added Readme File


모든 것이 이상적으로 작동하고 있습니다!

어떤 종류의 후크를 사용할 수 있나요?

Git을 사용하면 여러 실행 지점에 대한 후크를 만들 수 있습니다. 이들 중 일부는 다음과 같습니다 -


  1. Pre-Commit Hook: 이 후크는 커밋이 생성되기 전에 실행됩니다. 이를 통해 커밋 중인 변경 사항을 확인할 수 있습니다.


  2. 사전 수신 후크: 사전 수신 후크는 참조가 수정되기 전에 원격 저장소에서 실행되므로 사용자 정의 규칙이나 정책을 적용할 수 있습니다.


  3. 수신 후 후크: 이 후크는 참조 업데이트 후 원격 저장소에서도 실행됩니다. 알림을 보내거나 추가 작업을 수행하는 데 사용할 수 있습니다.


  4. Pre-Push Hook: 이 후크는 푸시가 이루어지기 전에 실행됩니다. 이는 특정 유형의 커밋 푸시를 방지하는 특정 정책을 시행하는 데 사용될 수 있습니다.


  5. prepare-commit-msg 후크: prepare-commit-msg 후크는 커밋 메시지가 생성된 후 실행되어 커밋 메시지를 수정하거나 향상시킬 수 있습니다.


Git을 더 잘 사용자 정의하기 위한 다양한 다른 후크가 있으며 Git 문서 에서 찾을 수 있습니다.


Git Hooks를 적절하게 사용한다면 엄청난 잠재력을 지닌 도구가 될 것입니다! 우리 개발자들은 많은 복잡한 작업을 해결할 수 있는 도구의 강점을 약화시키는 경우가 많습니다.


Git Hooks를 사용하면 모든 수준에서 DevOps가 향상되며 개발 주기에 DevOps를 통합하려는 조직에게는 좋은 방법이 될 수 있습니다.


여기까지 도달한 것을 축하합니다! 오늘 새로운 것을 배웠기를 바랍니다.