반응형
개요
GitLab 을 위한 Custom Hook은 다음의 3 가지 중 하나로 구현된다(Community Edition 기준).
- pre-receive: Git 서버가 클라이언트로부터 Push 요청을 받은 즉시 수행되며, 스크립트에서 non-zero 값을 return 하면 Push 요청은 reject 된다. Push 요청에 대한 값은 스크립트 내에서 stdin 스트림 값을 읽어서 사용 가능하다
- update: pre-receive 와 유사하지만, pre-receive 는 한 번의 Push에 대해 단 한 번 수행되며, update는 각각의 Branch 마다 triggering 되는 점이 다르다. 따라서 여러 Branch에 Push 를 수행하게 되면 특정한 브랜치에 대해서만 reject 되게 처리되게 하고 싶을 떄 사용한다
- post-receive: Push 에 대한 모든 처리가 완료된 직후에 수행된다. Push 데이터에 대해 stdin 을 참조해서 사용하면 되며, 주로 사용자에게 메일 발송이나 CI 서버로의 triggering 또는 이슈 트래킹 시스템으로 티켓을 업데이트할 때 사용한다
스크립트 pre-receive 구현 및 활용 방법
- pre-receive-commit-msg-check.py 파일 최종 버전을 GitLab 서버의 /root/custom_hooks_src에 저장해 둔다(백업/확인용, option 사항)
- pre-receive-commit-msg-check.py 파일 최종 버전을 /root/custom_hooks 에 pre-receive 라는 이름으로 저장하고, chmod a+x pre-receive, chown git.git pre-receive 로 설정한다
- copy_custom_hooks.sh 스크립트의 target_path_list 에 pre-receive Hook 을 적용할 repository 정보를 등록한다
copy_custom_hooks.sh 파일을 적당한 위치에 저장(/root/copy_custom_hooks.sh)해 두고 실행하면 지정된 repository 의 해당 path 로 복사된다(copy_custom_hooks.sh 파일의 내용은 다음과 같다)
- 본 pre-receive 스크립트의 commit 제약 조건은 다음과 같다
Commit message에 issue-123 또는 issue#123 또는 issue-#123 또는 hotfix 또는 force 가 없으면
Remote 에 Push 시에 오류 발생함(대소문자 구분 없음)
- pre-receive 의 원본에 해당되는 pre-receive-commit-msg-check.py 스크립트의 내용은 다음고 같으며, GitHub 의 여기에 공개되어 있다
- Barracuda -
반응형
'Technical > Development' 카테고리의 다른 글
Setting GOPATH & Basic golang 개발 (0) | 2020.09.08 |
---|---|
Curl로 새로운 GitHub 프로젝트(repository) 쉽게 생성하기 (0) | 2017.11.08 |
[Kubernetes, Docker] Go 언어로 Tiny Web Server 만들고 docker hub에 공유하기 (1) | 2017.09.08 |
[Mac/Xcode] git repository 와 연동해서 코딩하기 (0) | 2016.01.27 |
[Linux/Bash script] EUC-KR 로 된 한글 smi 자막을 UTF8 srt 로 변환하기 (2) | 2016.01.06 |