Como configurar o Gitlab com o gancho pós-recebimento?

19

Estou usando o Gitlab em um servidor e gostaria de enviar meu repositório git ao commit da ramificação master para outro servidor da web. Então, quando eu envio uma nova versão do site, o servidor de produção é atualizado. Eu sei que isso deve ser possível com ganchos dentro do gitlab, mas não consigo descobrir exatamente como. Tentei o seguinte guia link mas ele não foi escrito para uso com o gitlab, então estou faltando as peças.

O que preciso fazer no servidor da Web de produção e para que eu defino a URL do gancho?

    
por Tristan 06.01.2013 / 15:52

3 respostas

9

O gitlab já usa o gancho pós-recebimento internamente. você pode mexer com esse script e chamar o seu gancho também, mas a partir dos documentos parece que a maneira "oficial" seria usar "web-hooks", ou seja, deixar gitlab chamar seu servidor web no pós-recebimento e seu servidor web então puxa o repositório. Eu não tentei isso sozinho, mas como ninguém respondeu até agora, pensei em apontar você nessa direção:

para permitir que os web-hooks entrem na página principal do seu projeto e selecione os ganchos no canto superior direito, abaixo do menu principal. ( link ). há um exemplo e documentos vinculados a essa página ( link ).

edite: //

Eu tentei esta manhã. Aqui está um exemplo de script php. Ele assume que você já clonou o repositório e o servidor da Web tem todas as permissões necessárias / chaves ssh configuradas.

<?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);
} 
    
por 06.01.2013 / 22:47
5

Ganchos customizados foram adicionados recentemente (já que, como Gryphius disse, os ganchos regulares são usados internamente): link

Você acabou de criar um diretório custom_hooks no repositório do Git, e colocar os ganchos nele, e então o GitLab garante que eles sejam executados.

    
por 17.12.2014 / 08:54
4

O Gitlab não tem um gancho de pós-recebimento, pois os desenvolvedores substituíram o gitolite pelo gitlab- shell .

Portanto, você pode:

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

Certifique-se de que o usuário git tenha todas as permissões necessárias para executar os comandos neste arquivo

    
por 22.04.2014 / 03:04

Tags