Pregunta ¿Cómo configurar Gitlab con gancho post-recepción?


Estoy utilizando Gitlab en un servidor y me gustaría enviar mi repositorio de git a la confirmación de la rama maestra a otro servidor web. Entonces, cuando presiona 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. Probé la siguiente guía http://danielmiessler.com/study/git/#website pero no está escrito para su uso con gitlab, así que me faltan piezas.

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


19
2018-01-06 14:52


origen


puede usar los ganchos de git regulares, si tiene acceso de root al servidor de git, vea el enganche post-commit aquí: git-scm.com/book/en/v2/Customizing-Git-Git-Hooks - Doka
Puedes probar Git ganchos personalizados. - monsta


Respuestas:


gitlab ya utiliza 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 "ganchos web", es decir, deje que gitlab llame a su servidor web después de la recepción y luego su servidor web tira del repositorio. No lo he intentado yo mismo, pero como nadie respondió hasta el momento, pensé que te apuntaría en esa dirección:

para habilitar web-hooks vaya a la página principal de su proyecto y seleccione ganchos 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. Asume que ya ha clonado el repositorio y que el servidor web tiene configurados todos los permisos / claves ssh necesarios.

<?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);
} 

9
2018-01-06 21:47



Sí, sé dónde encontrar la página de ganchos. Simplemente no sé cómo debe verse el archivo como gitlab debería publicar. - Tristan
Ver respuesta editada, agregué un script de ejemplo. Puede que no sea perfecto, pero al menos una prueba rápida parece funcionar - Gryphius


Ganchos personalizados se agregaron recientemente (ya que Gryphius dijo que los ganchos normales se usan internamente): https://github.com/gitlabhq/gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md

Solo creas un custom_hooks el directorio en su repositorio de Git, y coloque los ganchos en él, y luego GitLab se asegura de que se ejecuten.


5
2017-12-17 07:54





Gitlab no tiene un gancho posterior a la recepción ya que los desarrolladores Gitolita reemplazada con cáscara de gitlab..

Por lo tanto usted puede:

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 de git tenga todos los permisos necesarios para ejecutar los comandos en este archivo


4
2018-04-22 01:04



hook carpeta ya existe: hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/ - MariuszS