web-dev-qa-db-fra.com

Comment puis-je ajouter des hooks à gitlab?

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:

  1. Créez des fichiers post-update et update sous .git/hooks/' each file creates a new file usingecho "text" >> nom_fichier`
  2. chmod les à 775.

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!)

14
Anonymous

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 hook pre-receive, le nom du fichier doit être pre-receive sans extension.
  • Rendez le fichier hook exécutable et assurez-vous qu'il appartient à git.
11
VonC

À 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

2
Doka

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.

  1. Choisissez un projet qui nécessite un crochet personnalisé.
  2. Sur le serveur GitLab, accédez au répertoire de référentiel du projet. Pour une installation à partir de la source, 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.
  3. Créez un nouveau répertoire à cet emplacement appelé custom_hooks.
  4. Dans le nouveau répertoire 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.
  5. Rendez le fichier hook exécutable et assurez-vous qu'il est la propriété de git.
  6. Écrivez le code pour que le crochet git fonctionne comme prévu. Les crochets peuvent être dans n'importe quelle langue. Assurez-vous que le "Shebang" en haut reflète correctement le type de langue. Par exemple, si le script est en Ruby, Shebang sera probablement #!/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 ...

1
Peter V. Mørch