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 입니다. 리포지터리의 Git 훅을 설정하도록 필요한 옵션과 함께 hooks set 하위 명령을 실행합니다. 예를 들면 다음과 같습니다. cat custom_hooks.tar | sudo -u git -- /opt/gitlab/embedded/bin/gitaly hooks set --storage <storage> --repository <relative path> --config <config path> 노드에