¿Cómo configurar Gitlab con gancho posterior a la recepción?

19

Estoy usando Gitlab en un servidor y me gustaría enviar mi repositorio git al confirmar la rama maestra a otro servidor web. Entonces, cuando lanzo una nueva versión del sitio web, el servidor de producción se actualiza. Sé que esto debería ser posible con ganchos dentro de gitlab, pero no puedo encontrar exactamente cómo. Intenté la siguiente guía http://danielmiessler.com/study/git/#website pero no está escrita para usarse con gitlab, así que me faltan partes.

¿Qué debo hacer en el servidor web de producción y en qué debo configurar la URL de enlace?

Tristan
fuente
puede usar los enlaces regulares de git, si tiene acceso de root al servidor git, vea el enlace
Doka
Puedes probar los ganchos Custom Git .
monsta

Respuestas:

9

gitlab ya usa el gancho posterior a la recepción internamente. podría jugar con ese script y llamar a su gancho también, pero desde los documentos parece que la forma "oficial" sería usar "web-hooks", es decir, deje que gitlab llame a su servidor web en la recepción posterior y luego a su servidor web tira del repositorio. No lo he intentado yo mismo, pero como nadie respondió hasta ahora, pensé en señalarle en esa dirección:

para habilitar los enlaces web, vaya a la página principal de su proyecto y seleccione enlaces desde la parte superior derecha, debajo del menú principal. ( http://yourgitlab.example.net/yourproject/hooks ). hay un ejemplo y documentos vinculados desde esa página ( http://yourgitlab.example.net/help/web_hooks ).

editar://

Lo intenté esta mañana. Aquí hay un ejemplo de script php. Se supone que ya ha clonado el repositorio y el servidor web tiene todos los permisos necesarios / claves 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);
} 
Grifo
fuente
Sí, sé dónde encontrar la página de ganchos. Simplemente no sé cómo debería verse el archivo en el que gitlab debería publicar.
Tristan
1
ver respuesta editada, agregué un script de ejemplo. puede que no sea perfecto, pero al menos una prueba rápida parece funcionar
Gryphius
4

Gitlab no tiene un gancho posterior a la recepción ya que los desarrolladores reemplazaron gitolite con gitlab-shell .

Por lo tanto puedes:

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

Asegúrese de que el usuario git tenga todos los permisos necesarios para ejecutar los comandos en este archivo

Nicolay77
fuente
hookcarpeta ya existe:hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/
MariuszS