DevOps는 개발 및 배포 프로세스를 단순화하려는 기업의 소프트웨어 개발 세계에서 필수적인 구성 요소가 되었습니다. 사용 가능한 여러 DevOps 기술 중에서 때때로 무시되지만 실제로 효과적인 기술이 있습니다.
그 핵심 기술이 다름 아닌 “ Git Hooks” 입니다. ”
Git Hooks는 작업을 자동화하고, 코딩 표준을 적용하고, 지속적인 배포를 수행하고, 테스트를 실행하는 훌륭한 도구입니다.
Git Hooks를 사용하여 DevOps 관행을 혁신할 수 있는 방법을 살펴보겠습니다!
먼저 공식적인 정의를 살펴보겠습니다.
후크는 git 실행의 특정 지점에서 작업을 트리거하기 위해 후크 디렉터리에 배치할 수 있는 프로그램입니다.
다행히도 이는 정말 간단한 정의입니다!
독자들이 정의에 대해 가질 수 있는 몇 가지 질문을 다루겠습니다.
Q) Hooks 디렉터리란 무엇인가요? 어디에 위치해 있나요?
후크 디렉터리는 Git이 실행할 실행 프로그램이나 후크가 포함된 Git 저장소의 디렉터리입니다. 기본적으로 후크 디렉터리는 $GIT_DIR/hooks
입니다. 사용자는 core.hooksPath
구성 변수를 사용하여 이를 구성할 수도 있습니다.
Q) Git의 실행 포인트는 무엇입니까?
Git 실행 지점은 후크를 실행할 수 있는 Git 워크플로의 단계입니다. 사전 커밋, 사후 커밋, 사전 푸시, 사후 수신, 사전 리베이스 및 사후 병합은 Git 실행 지점의 몇 가지 예입니다.
이 섹션을 요약하면 Git Hooks에 대해 다음과 같은 정의를 가질 수 있습니다.
Git은 코드 커밋, 푸시 또는 병합과 같은 특정 작업 전후에 "후크"라는 스크립트를 실행합니다. 이를 통해 작업을 자동화하고, 정책을 시행하고, 개발 프로세스 중에 코드베이스와 상호 작용할 수 있습니다. Git 후크는 Git 저장소의
.git/hooks
디렉터리 에 저장됩니다.
모든 커밋 메시지에 "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을 사용하면 여러 실행 지점에 대한 후크를 만들 수 있습니다. 이들 중 일부는 다음과 같습니다 -
Pre-Commit Hook: 이 후크는 커밋이 생성되기 전에 실행됩니다. 이를 통해 커밋 중인 변경 사항을 확인할 수 있습니다.
사전 수신 후크: 사전 수신 후크는 참조가 수정되기 전에 원격 저장소에서 실행되므로 사용자 정의 규칙이나 정책을 적용할 수 있습니다.
수신 후 후크: 이 후크는 참조 업데이트 후 원격 저장소에서도 실행됩니다. 알림을 보내거나 추가 작업을 수행하는 데 사용할 수 있습니다.
Pre-Push Hook: 이 후크는 푸시가 이루어지기 전에 실행됩니다. 이는 특정 유형의 커밋 푸시를 방지하는 특정 정책을 시행하는 데 사용될 수 있습니다.
prepare-commit-msg 후크: prepare-commit-msg 후크는 커밋 메시지가 생성된 후 실행되어 커밋 메시지를 수정하거나 향상시킬 수 있습니다.
Git을 더 잘 사용자 정의하기 위한 다양한 다른 후크가 있으며 Git 문서 에서 찾을 수 있습니다.
Git Hooks를 적절하게 사용한다면 엄청난 잠재력을 지닌 도구가 될 것입니다! 우리 개발자들은 많은 복잡한 작업을 해결할 수 있는 도구의 강점을 약화시키는 경우가 많습니다.
Git Hooks를 사용하면 모든 수준에서 DevOps가 향상되며 개발 주기에 DevOps를 통합하려는 조직에게는 좋은 방법이 될 수 있습니다.
여기까지 도달한 것을 축하합니다! 오늘 새로운 것을 배웠기를 바랍니다.