J'ai installé un nouveau Gitlab sur CentOs sur /opt/gitlab-6.9.2-0/apps/gitlab/
et créé un nouveau référentiel sous groupe de livraison continue. Le chemin complet est /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-satellites/continuous-delivery/cd-test
. Il n'y a qu'un seul fichier sous ce chemin qui est README.txt.
Ce que j'essaie de faire est de créer un nouveau fichier lorsque quelqu'un envoie des modifications au serveur. Voici ce que j'ai fait sur le serveur:
post-update
et update
sous .git/hooks/' each file creates a new file using
echo "text" >> nom_fichier`Lorsque je modifie les modifications du serveur local au serveur, aucun fichier n'est créé. Je voudrais donc savoir ce que je dois faire pour résoudre ce problème.
Mise à jour 1
J'ai ajouté post-receive
et post-update
à repositories
path comme VonC a suggéré
[root@git-cd hooks]# pwd
/opt/gitlab-6.9.2-0/apps/gitlab/repositories/continuous-delivery/cd-test.git/hooks
[root@git-cd hooks]# ll
total 48
-rwxrwxr-x. 1 git git 452 Jun 10 06:01 applypatch-msg.sample
-rwxrwxr-x. 1 git git 896 Jun 10 06:01 commit-msg.sample
-rwxrwxr-x. 1 git git 44 Jun 11 00:37 post-receive
-rwxrwxr-x. 1 git git 41 Jun 11 00:38 post-update
-rwxrwxr-x. 1 git git 189 Jun 10 06:01 post-update.sample
-rwxrwxr-x. 1 git git 398 Jun 10 06:01 pre-applypatch.sample
-rwxrwxr-x. 1 git git 1642 Jun 10 06:01 pre-commit.sample
-rwxrwxr-x. 1 git git 1281 Jun 10 06:01 prepare-commit-msg.sample
-rwxrwxr-x. 1 git git 1352 Jun 10 06:01 pre-Push.sample
-rwxrwxr-x. 1 git git 4972 Jun 10 06:01 pre-rebase.sample
lrwxrwxrwx. 1 git git 57 Jun 10 06:01 update -> /opt/gitlab-6.9.2-0/apps/gitlab/gitlab-Shell/hooks/update
-rwxrwxr-x. 1 git git 3611 Jun 10 06:01 update.sample
Les deux fichiers contiennent un script qui ajoute une nouvelle ligne à un fichier existant, "post-receive-2" >> /var/log/hooks_test.log
. puis poussé les modifications de ma machine locale sur le serveur. Mais cela n’a toujours pas ajouté le texte.
Mise à jour 2
Le script en post-réception était faux, il n'avait pas d'écho. Après avoir ajouté echo (echo "post-receive-2" >> /var/log/hooks_test.log
, cela fonctionne comme prévu!)
Cela serait dû au fait que les dépôts satellites ne sont pas ceux dans lesquels vous souhaitez pousser, de sorte que leurs raccords ne sont pas déclenchés lorsque vous pensez (c'est-à-dire, pas lorsque quelqu'un envoie au serveur GitLab).
PR 6185 présente la documentation générale sur l'archicture
/home/git/gitlab-satellites
- extrait les référentiels pour les demandes de fusion et la modification de fichiers à partir de l'interface utilisateur Web. Cela peut être traité comme un répertoire de fichiers temporaires.Le référentiel satellite est utilisé par l’interface Web pour éditer les référentiels et le wiki, qui est également un référentiel git.
Vous devriez ajouter votre crochet dans le nu repos ~git/repositories
.
Ou (mise à jour T4 2014, à partir de GitLab 7.5+ Nov 2014 ), vous pouvez utiliser HOOKS PERSONNALISÉS (au lieu de WEBHOOKS) , comme mentionné ci-dessous par Doka .
Les hooks Git personnalisés doivent être configurés sur le système de fichiers du serveur GitLab.
Seuls les administrateurs du serveur GitLab pourront effectuer ces tâches. Veuillez explorer les webhooks en tant qu'option si vous n'avez pas accès au système de fichiers.
- Sur le serveur GitLab, accédez au répertoire de référentiel du projet.
Pour une installation manuelle, le chemin est généralement/home/git/repositories/<group>/<project>.git
.
Pour les installations Omnibus, le chemin est généralement/var/opt/gitlab/git-data/repositories/<group>/<project>.git
.- Créez un nouveau répertoire à cet emplacement appelé
custom_hooks
.- Dans le nouveau répertoire
custom_hooks
, créez un fichier dont le nom correspond au type de hook.
Pour un hookpre-receive
, le nom du fichier doit êtrepre-receive
sans extension.- Rendez le fichier hook exécutable et assurez-vous qu'il appartient à
git
.
À partir de la version 2.2.0 de gitlab-Shell (qui requiert GitLab 7.5+), les administrateurs de GitLab peuvent ajouter des points d'ancrage personnalisés à tout projet GitLab. Vous devez donc mettre à niveau et suivre les instructions à partir d’ici: https://docs.gitlab.com/ce/administration/custom_hooks.html
Voir Crochets personnalisés Git - Documentation GitLab pour connaître la méthode officielle pour le faire.
Résumé: A partir de la version 2.2.0 de gitlab-Shell (qui requiert GitLab 7.5+), les administrateurs de GitLab peuvent ajouter des hooks Git personnalisés à tout projet GitLab.
/home/git/repositories/<group>/<project>.git
. Pour les installations Omnibus, le chemin est généralement /var/opt/gitlab/git-data/repositories/<group>/<project>.git
.custom_hooks
.custom_hooks
, créez un fichier dont le nom correspond au type de hook. Pour un hook de pré-réception, le nom du fichier doit être pre-receive
sans extension.#!/usr/bin/env Ruby
.Mais voyez le lien ci-dessus pour les documents officiels. Ce qui précède est un instantané tel qu'il était aujourd'hui ...