수신 후 후크로 Gitlab을 설정하는 방법은 무엇입니까?


19

한 서버에서 Gitlab을 사용하고 있으며 마스터 브랜치를 커밋 할 때 git 리포지토리를 다른 웹 서버로 푸시하고 싶습니다. 따라서 새 버전의 웹 사이트를 푸시하면 프로덕션 서버가 업데이트됩니다. 나는 이것이 gitlab 내부의 후크로 가능해야한다는 것을 알고 있지만 얼마나 정확하게 찾을 수는 없습니다. 다음 가이드 http://danielmiessler.com/study/git/#website를 시도 했지만 gitlab과 함께 사용하도록 작성되지 않았으므로 부품이 누락되었습니다.

프로덕션 웹 서버에서 무엇을해야합니까? 그러면 후크 URL을 어떻게 설정해야합니까?


git 서버에 대한 루트 액세스 권한이있는 경우 일반 git hook을 사용할 수 있습니다. 여기에서 post-commit hook을 참조하십시오. git-scm.com/book/en/v2/Customizing-Git-Git-Hooks
Doka

Custom Git hooks을 사용해 볼 수 있습니다 .
monsta

답변:


9

gitlab은 이미 수신 후 후크를 내부적으로 사용합니다. 그 스크립트로 주위를 둘러보고 후크를 호출 할 수도 있지만 문서에서 "공식적인"방법은 "웹 후크"를 사용하는 것입니다. 즉, gitlab이 수신 후 웹 서버를 호출하고 웹 서버를 호출하도록하십시오. 리포지토리를 가져옵니다. 나는 이것을 직접 시도하지는 않았지만 지금까지 아무도 대답하지 않았으므로 그 방향으로 당신을 지적 할 것이라고 생각했습니다.

웹 후크를 사용하려면 프로젝트의 기본 페이지로 이동하여 기본 메뉴 아래 오른쪽 상단에서 후크를 선택하십시오. ( http://yourgitlab.example.net/yourproject/hooks ). 해당 페이지에서 링크 된 예제 및 문서가 있습니다 ( http://yourgitlab.example.net/help/web_hooks ).

편집하다://

오늘 아침에 해봤어요 다음은 PHP 스크립트 예입니다. 이미 repo를 복제했으며 웹 서버에 필요한 모든 권한 / ssh 키가 설정되어 있다고 가정합니다.

<?php
$mirrordir='/srv/http/gitlabhooktest/gitmirror';
$gitdir=$mirrordir."/.git";

$json= file_get_contents('php://input');
#error_log($json);
$jsarr=json_decode($json,true);
#error_log(print_r($jsarr,true));
$branch=$jsarr["ref"];
if($branch=='refs/heads/master'){
 $cmd="git --work-tree=$mirrordir --git-dir=$gitdir pull";
 #error_log($cmd);
 exec($cmd);
} 

예. 후크 페이지를 어디에서 찾을 수 있는지 알고 있습니다. 파일이 gitlab에 게시되어야하는 모습을 모르겠습니다.
Tristan

1
편집 된 답변 참조, 예제 스크립트를 추가했습니다. 완벽하지는 않지만 최소한 빠른 테스트가 작동하는 것 같습니다
Gryphius


4

개발자 가 gitolite를 gitlab-shell로 교체 했기 때문에 Gitlab에는 수신 후 후크가 없습니다 .

따라서 다음을 수행 할 수 있습니다.

sudo -u git bash
touch /home/git/repositories/<repository name>.git/hooks/post-receive
vim /home/git/repositories/<repository name>.git/hooks/post-receive

git 사용자가이 파일에서 명령을 실행하는 데 필요한 모든 권한을 가지고 있는지 확인하십시오


hook폴더가 이미 존재합니다 :hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/
MariuszS
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.