J'utilise Gitlab sur un serveur et je voudrais pousser mon référentiel git lors de la validation de la branche principale vers un autre serveur Web. Ainsi, lorsque je pousse une nouvelle version du site Web, le serveur de production est mis à jour. Je sais que cela devrait être possible avec des crochets à l'intérieur de gitlab mais je ne peux pas trouver exactement comment. J'ai essayé le guide suivant http://danielmiessler.com/study/git/#website mais il n'est pas écrit pour être utilisé avec gitlab donc je manque des pièces.
Que dois-je faire sur le serveur Web de production et à quoi dois-je alors définir l'URL du hook?
gitlab utilise déjà le hook de post-réception en interne. vous pouvez jouer avec ce script et appeler votre hook aussi, mais d'après les documents, il semble que la manière "officielle" serait d'utiliser des "web-hooks", c'est-à-dire que gitlab appelle votre serveur web après réception et votre serveur web ensuite tire le référentiel. Je n'ai pas essayé moi-même, mais comme personne n'a répondu jusqu'à présent, j'ai pensé que je vous orienterais dans cette direction:
pour activer les web-hooks, allez dans la page principale de votre projet et sélectionnez les hooks en haut à droite, en dessous du menu principal. ( http://yourgitlab.example.net/yourproject/hooks ). il y a un exemple et des documents liés à partir de cette page ( http://yourgitlab.example.net/help/web_hooks ).
éditer://
Je l'ai essayé ce matin. Voici un exemple de script php. Il suppose que vous avez déjà cloné le dépôt et que le serveur Web dispose de toutes les autorisations/clés ssh nécessaires.
<?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);
}
Des crochets personnalisés ont été récemment ajoutés (car comme Gryphius l'a dit, les crochets réguliers sont utilisés en interne): https://github.com/gitlabhq/ gitlabhq/blob/667c0a909bde1cf71f21d8ec9768e98b1c489030/doc/hooks/custom_hooks.md
Vous venez de créer un custom_hooks
répertoire dans votre dépôt Git nu, et y mettre les crochets, puis GitLab s'assure qu'ils sont exécutés.
Gitlab n'a pas de hook post-réception depuis que les développeurs ont remplacé gitolite par gitlab-Shell .
Vous pouvez donc:
Sudo -u git bash
touch /home/git/repositories/<repository name>.git/hooks/post-receive
vim /home/git/repositories/<repository name>.git/hooks/post-receive
Assurez-vous que l'utilisateur git dispose de toutes les autorisations nécessaires pour exécuter les commandes de ce fichier