Git 서버 훅
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> --repository <relative path> --config <config