Git 서버 훅
Git 서버 훅을 구성하는 방법을 설명합니다. 리포지터리별 서버 훅 설정, 모든 리포지터리에 대한 글로벌 서버 훅 생성, 연결된 서버 훅, 환경 변수, 사용자 정의 오류 메시지를 다룹니다.
히스토리 GitLab 15.6에서 서버 훅에서 Git 서버 훅으로 이름이 변경 되었습니다. Git 서버 훅은 GitLab 서버에서 사용자 정의 로직을 실행합니다. 다음과 같은 Git 관련 작업을 실행하는 데 사용할 수 있습니다: 특정 커밋 정책 적용. 리포지터리 상태에 따른 작업 수행. Git 서버 훅은 pre-receive , post-receive , update Git 서버 사이드 훅을 사용합니다. GitLab 관리자는 gitaly 명령을 사용하여 서버 훅을 구성합니다. 이 명령은 다음도 수행합니다: Gitaly 서버 실행에 사용됩니다. 여러 서브명령을 제공합니다. Gitaly gRPC API에 연결합니다. gitaly 명령에 액세스할 수 없는 경우 서버 훅의 대안으로 다음이 있습니다: 웹훅 . GitLab CI/CD . 사용자 구성 가능한 Git 훅 인터페이스를 위한 푸시 규칙 . GitLab Helm 차트 인스턴스의 경우 Gitaly 차트의 글로벌 서버 훅 에 대한 정보를 참조하세요. Note Geo 는 보조 노드에 서버 훅을 복제하지 않습니다. 사전 요구 사항 # 리포지터리에 대한 스토리지 이름 , Gitaly 구성 파일 경로(Linux 패키지 인스턴스에서 기본값은 /var/opt/gitlab/gitaly/config.toml ), 리포지터리 상대 경로 . 훅에서 필요한 언어 런타임 및 유틸리티가 Gitaly를 실행하는 각 서버에 설치되어 있어야 합니다. 리포지터리에 대한 서버 훅 설정 # 리포지터리에 대한 서버 훅을 설정하려면: 사용자 정의 훅이 포함된 tar 파일을 만듭니다: 서버 훅이 예상대로 작동하도록 코드를 작성합니다. Git 서버 훅은 모든 프로그래밍 언어로 작성할 수 있습니다. 상단의 shebang이 언어 유형을 반영하는지 확인합니다. 예를 들어 스크립트가 Ruby인 경우 shebang은 아마도 #!/usr/bin/env ruby 일 것입니다. 단일 서버 훅을 만들려면 훅 유형과 일치하는 이름으로 파일을 만듭니다. 예를 들어 pre-receive 서버 훅의 경우 파일명은 확장자 없이 pre-receive 여야 합니다. 여러 서버 훅을 만들려면 훅 유형과 일치하는 디렉토리를 만듭니다. 예를 들어 pre-receive 서버 훅의 경우 디렉토리 이름은 pre-receive.d 여야 합니다. 해당 디렉토리에 훅 파일을 넣습니다. 서버 훅 파일이 실행 가능하고 백업 파일 패턴( *~ )과 일치하지 않는지 확인합니다. 서버 훅은 tar 파일의 루트에 있는 custom_hooks 디렉토리에 있어야 합니다. tar 명령으로 사용자 정의 훅 아카이브를 만듭니다. 예: tar -cf custom_hooks.tar custom_hooks . 필요한 옵션으로 hooks set 서브명령을 실행하여 리포지터리에 대한 Git 훅을 설정합니다. 예: cat custom_hooks.tar | sudo -u git -- /opt/gitlab/embedded/bin/gitaly hooks set --storage <storage> --re
