파일 훅
소스 코드를 수정하지 않고 GitLab Self-Managed 인스턴스를 외부 서비스와 통합하는 사용자 정의 파일 훅을 만듭니다.
사용자 지정 파일 훅을 사용하면 GitLab 소스 코드를 수정하지 않고 사용자 지정 통합을 추가할 수 있습니다. 파일 훅은 이벤트가 발생할 때마다 실행됩니다. 파일 훅 코드에서 이벤트나 프로젝트를 필터링할 수 있으며, 필요한 만큼 파일 훅을 만들 수 있습니다. 각 파일 훅은 이벤트가 발생하면 GitLab 이 비동기로 트리거합니다. 이벤트 목록은 시스템 훅 및 웹훅 문서를 참고합니다. Note 파일 훅은 GitLab 서버의 파일 시스템에 구성해야 합니다. GitLab 서버 관리자만 이 작업을 수행할 수 있습니다. 파일 시스템에 접근할 수 없다면 시스템 훅 이나 웹훅 을 대안으로 검토합니다. 직접 파일 훅을 작성해 유지 관리하는 대신, GitLab 소스 코드를 직접 수정하고 업스트림에 기여할 수도 있습니다. 이 방식을 사용하면 버전이 바뀌어도 기능이 유지되고 테스트로 검증됩니다. 사용자 지정 파일 훅 설정 # 파일 훅은 file_hooks 디렉터리에 있어야 합니다. 하위 디렉터리는 무시됩니다. 예시는 file_hooks 아래의 example 디렉터리 에서 확인할 수 있습니다. 사용자 지정 훅을 설정하려면 다음을 수행합니다. Sidekiq 구성 요소를 실행하는 GitLab 서버에서 플러그인 디렉터리를 찾습니다. 직접 컴파일한 설치에서는 경로가 보통 /home/git/gitlab/file_hooks/ 입니다. Linux 패키지 설치에서는 경로가 보통 /opt/gitlab/embedded/service/gitlab-rails/file_hooks 입니다. 서버가 여러 대인 구성 에서는 훅 파일이 각 GitLab 애플리케이션(Rails) 서버와 Sidekiq 서버에 모두 있어야 합니다. file_hooks 디렉터리 안에 공백이나 특수 문자가 없는 이름으로 파일을 만듭니다. 훅 파일을 실행 가능하게 만들고 소유자가 Git 사용자인지 확인합니다. 파일 훅이 의도한 대로 동작하도록 코드를 작성합니다. 어떤 언어로도 작성할 수 있으며, 파일 맨 위의 'shebang' 이 해당 언어를 올바르게 나타내는지 확인합니다. 예를 들어 스크립트가 Ruby로 작성되었다면 shebang은 대체로 #!/usr/bin/env ruby 입니다. 파일 훅에 전달되는 데이터는 STDIN 에 JSON 형식으로 제공됩니다. 이는 시스템 훅 과 완전히 동일합니다. 파일 훅 코드가 올바르게 구현되었다면 훅은 상황에 맞게 실행됩니다. 파일 훅 파일 목록은 이벤트마다 갱신됩니다. 새 파일 훅을 적용하기 위해 GitLab을 재시작할 필요는 없습니다. 파일 훅이 0 이 아닌 종료 코드로 실행되거나 실행에 실패하면 다음 위치에 메시지가 기록됩니다. 직접 컴파일한 설치는 log/file_hook.log . Linux 패키지 설치는 gitlab-rails/file_hook.log . 이 파일은 파일 훅이 0 이 아닌 코드로 종료된 경우에만 생성됩니다. 파일 훅이 실행되면 시작된 FileHookWorker 마다 Sidekiq 로그 gitlab/sidekiq/current 에 항목이 추가됩니다. 이 항