파일 후크
상세 정보: Tier: Free, Premium, Ultimate Offering: Self-managed
서버 후크 또는 시스템 후크와 혼동하지 않도록 주의하십시오. GitLab 소스 코드를 수정하지 않고 사용자 정의 통합을 소개하는 데 사용자 정의 파일 후크를 사용할 수 있습니다.
파일 후크는 각 이벤트에서 실행됩니다. 파일 후크의 코드에서 이벤트나 프로젝트를 필터링하고 필요한 만큼 많은 파일 후크를 생성할 수 있습니다. 각 파일 후크는 GitLab이 비동기적으로 이벤트에 따라 트리거됩니다. 이벤트 목록은 시스템 후크 및 웹훅 설명서를 참조하세요.
참고: 파일 후크는 GitLab 서버의 파일 시스템에서 구성해야 합니다. 이 작업을 완료할 수 있는 권한은 GitLab 서버 관리자에게 있습니다. 파일 시스템 액세스가 없는 경우 웹훅을 옵션으로 고려하십시오.
자체 파일 후크를 작성하고 지원하는 대신 GitLab 소스 코드에 직접 변경을 가할 수 있고 상류로 기여할 수도 있습니다. 이렇게 함으로써 기능이 버전 간에 보존되고 테스트에 의해 지원되도록 할 수 있습니다.
사용자 정의 파일 후크 설정
파일 후크는 file_hooks
디렉토리에 있어야 합니다. 하위 디렉토리는 무시됩니다.
예제는 file_hooks
디렉토리의 example
디렉토리에서 찾을 수 있습니다.
사용자 정의 후크를 설정하려면:
-
GitLab 서버에서 플러그인 디렉토리를 찾으세요. 소스 컴파일된 설치의 경우 경로는 일반적으로
/home/git/gitlab/file_hooks/
입니다. Linux 패키지 설치의 경우 경로는 일반적으로/opt/gitlab/embedded/service/gitlab-rails/file_hooks
입니다. 다중 서버 구성의 경우 후크 파일은 각 응용 프로그램 서버에 있어야 합니다. -
file_hooks
디렉토리 안에 공백이나 특수 문자 없이 원하는 이름의 파일을 만드세요. -
후크 파일을 실행 가능하게 하고 Git 사용자가 소유하도록 하십시오.
-
필요에 따라 후크 파일에 필요한 대로 기능하는 코드를 작성하십시오. 언어에 관계 없이 상단의 ‘셰뱅’이 해당 언어 유형을 적절하게 나타내도록 하십시오. 예를 들어, Ruby로 작성된 스크립트라면 셰뱅은 아마도
#!/usr/bin/env ruby
일 것입니다. -
파일 후크에 제공되는 데이터는 ‘STDIN’에 JSON 형식으로 제공됩니다. 이는 시스템 후크에서 제공되는 것과 완전히 동일합니다.
파일 후크 코드가 올바르게 구현되었다고 가정하면 후크는 적절하게 실행됩니다. 파일 후크 목록은 각 이벤트마다 업데이트됩니다. 새로운 파일 후크를 적용하려면 GitLab을 다시 시작할 필요가 없습니다.
파일 후크가 0이 아닌 종료 코드로 실행되거나 GitLab이 실행하지 못하는 경우에는 다음 위치에 메시지가 기록됩니다.
- Linux 패키지 설치의 경우
gitlab-rails/file_hook.log
. - 소스 컴파일된 설치의 경우
log/file_hook.log
.
파일 후크 예제
이 예제는 project_create
이벤트에서만 응답하며, GitLab 인스턴스가 관리자에게 새 프로젝트가 생성되었음을 알립니다.
#!/opt/gitlab/embedded/bin/ruby
# 중첩된 루비 버전을 사용함으로써 선택한 언어가 사용할 수 없는 가능성을 제거합니다.
require 'json'
require 'mail'
# 전달된 변수는 JSON 형식이므로 먼저 구문 분석해야 합니다.
ARGS = JSON.parse($stdin.read)
# 우리는 'project_create' 이벤트에서만 이 파일 후크를 트리거하려고 합니다.
return unless ARGS['event_name'] == 'project_create'
# gitlab 인스턴스의 관리자에게 새 프로젝트가 생성되었음을 알릴 것입니다.
Mail.deliver do
from 'info@gitlab_instance.com'
to 'admin@gitlab_instance.com'
subject "new project " + ARGS['name']
body ARGS['owner_name'] + 'created project ' + ARGS['name']
end
유효성 검사 예제
자체 파일 후크를 작성하는 것은 까다로울 수도 있으며, 시스템을 변경하지 않고 확인할 수 있는 것이 편리합니다. 적당한 환경에서 파일 후크를 테스트한 후 실제 환경에서 사용하기 전에 Rake 작업을 사용할 수 있도록 제공됩니다. Rake 작업은 샘플 데이터를 사용하고 각 파일 후크를 실행합니다. 출력에서 시스템이 파일 후크를 보고 실행했는지 여부를 결정하는 데 필요한 정보가 있어야 합니다.
# Omnibus 설치
sudo gitlab-rake file_hooks:validate
# 소스 설치
cd /home/git/gitlab
bundle exec rake file_hooks:validate RAILS_ENV=production
출력 예시:
/file_hooks 디렉토리에서 파일 후크 유효성 검사 중
* /home/git/gitlab/file_hooks/save_to_file.clj 성공 (0 종료 코드)
* /home/git/gitlab/file_hooks/save_to_file.rb 실패 (0이 아닌 종료 코드)