한 서버에서 Gitlab을 사용하고 있으며 마스터 브랜치를 커밋 할 때 git 리포지토리를 다른 웹 서버로 푸시하고 싶습니다. 따라서 새 버전의 웹 사이트를 푸시하면 프로덕션 서버가 업데이트됩니다. 나는 이것이 gitlab 내부의 후크로 가능해야한다는 것을 알고 있지만 얼마나 정확하게 찾을 수는 없습니다. 다음 가이드 http://danielmiessler.com/study/git/#website를 시도 했지만 gitlab과 함께 사용하도록 작성되지 않았으므로 부품이 누락되었습니다.
프로덕션 웹 서버에서 무엇을해야합니까? 그러면 후크 URL을 어떻게 설정해야합니까?
답변
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);
}
답변
사용자 정의 후크 가 최근에 추가되었습니다 (Gryphius가 일반 후크가 내부적으로 사용된다고 말한 이후) : https://github.com/gitlabhq/gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md
custom_hooks
Git 저장소에 디렉토리를 작성 하고 후크를 넣은 다음 GitLab이 실행되도록합니다.
답변
개발자 가 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 사용자가이 파일에서 명령을 실행하는 데 필요한 모든 권한을 가지고 있는지 확인하십시오