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 저장소를 초기화하세요. git_hooks_tut ~/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 마지막으로 스크립트를 실행 가능하게 만듭니다. 실행할 수 없는 스크립트는 후크 디렉터리에 있더라도 git에서 건너뜁니다. commit-msg ~/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를 통합하려는 조직에게는 좋은 방법이 될 수 있습니다. 여기까지 도달한 것을 축하합니다! 오늘 새로운 것을 배웠기를 바랍니다.