Skip to main content

Création d’un environnement de hook de pré-réception

Pour exécuter des hooks de pré-réception, utilisez l’environnement de pré-réception par défaut ou créez un environnement personnalisé.

Un environnement de pré-réception pour GitHub Enterprise Server est un environnement chroot Linux. Étant donné que les hooks de pré-réception s’exécutent à chaque événement de poussée (push), ils doivent être rapides et légers. Généralement, l’environnement nécessaire à ces vérifications sera minimal.

GitHub Enterprise Server fournit un environnement par défaut qui inclut les packages awk, bash, coreutils, curl, find, gnupg, grep, jq et sed.

Si vous avez une exigence spécifique qui n’est pas satisfaite par cet environnement, par exemple la prise en charge d’un langage particulier, vous pouvez créer et charger votre propre environnement chroot Linux 64 bits.

La version Git utilisée dans l’environnement de hook de pré-réception doit être au moins 2.11, ou si vous utilisez libgit2, vous devez utiliser au moins la version 0.18. Si vous utilisez une autre implémentation Git, elle doit prendre en charge les chemins d’accès relatif dans le fichier info/alternates.

Création d’un environnement de hook de pré-réception avec Docker

Vous pouvez utiliser un outil de gestion de conteneurs Linux pour créer un environnement de hook de pré-réception. Pour cet exemple, Alpine Linux et Docker sont utilisés.

  1. Vérifiez que Docker est installé localement.

  2. Créez le fichier Dockerfile.alpine, contenant ces informations :

    FROM alpine:latest
    RUN apk add --no-cache git bash
    
  3. À partir du répertoire de travail contenant Dockerfile.alpine, générez une image :

    $ docker build -f Dockerfile.alpine -t pre-receive.alpine .
    > Sending build context to Docker daemon 12.29 kB
    > Step 1 : FROM alpine:latest
    >  ---> 8944964f99f4
    > Step 2 : RUN apk add --no-cache git bash
    >  ---> Using cache
    >  ---> 0250ab3be9c5
    > Successfully built 0250ab3be9c5
    
  4. Créez un conteneur :

    docker create --name pre-receive.alpine pre-receive.alpine /bin/true
    
  5. Exportez le conteneur Docker dans un fichier tar avec compression gzip :

    docker export pre-receive.alpine | gzip > alpine.tar.gz
    

    Ce fichier alpine.tar.gz est prêt à être chargé vers l’appliance GitHub Enterprise Server.

Création d’un environnement de hook de pré-réception avec chroot

  1. Créez un environnement Linux chroot.

  2. Créez un fichier tar avec compression gzip dans le répertoire chroot.

    cd /path/to/chroot
    tar -czf /path/to/pre-receive-environment.tar.gz .
    

    Remarques :

    • N’incluez pas le chemin de début des fichiers dans l’archive tar, par exemple /path/to/chroot.
    • /bin/sh doit exister et être exécutable comme point d’entrée dans l’environnement chroot.
    • À la différence des environnements chroot traditionnels, l’environnement chroot pour les hooks de pré-réception ne nécessite pas de répertoire dev.

Pour plus d’informations sur la création d’un environnement chroot, consultez « Chroot » dans le Wiki Debian, « BasicChroot » dans le Wiki d’aide de la communauté Ubuntu ou « Installing Alpine Linux in a chroo » (Installation d’Alpine Linux dans un environnement chroot) dans le Wiki Alpine Linux.

Chargement d’un environnement de hook de pré-réception sur GitHub Enterprise Server

  1. Dans le coin supérieur droit de GitHub Enterprise Server, cliquez sur votre photo de profil, puis sur Paramètres d’entreprise.

    Capture d’écran du menu déroulant qui s’affiche lorsque vous cliquez sur la photo de profil sur GitHub Enterprise Server. L’option « Paramètres d’entreprise » est mise en évidence avec un contour orange foncé.

  2. Sur le côté gauche de la page, dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.

  3. Sous «  Paramètres », cliquez sur Hooks.

  4. Cliquez sur Gérer les environnements.

  5. Cliquez sur Ajouter un environnement.

  6. Dans le champ « Nom de l’environnement », entrez le nom souhaité.

  7. Dans le champ « Charger l’environnement à partir d’une URL », entrez l’URL du fichier *.tar.gz qui contient votre environnement.

  8. Cliquez sur Ajouter un environnement.

Chargement d’un environnement de hook de pré-réception avec l’interpréteur de commandes d’administration

  1. Chargez un fichier *.tar.gz lisible contenant votre environnement vers un hôte web et copiez l’URL ou transférez le fichier à l’appliance GitHub Enterprise Server avec scp. Quand vous utilisez scp, il peut être nécessaire d’ajuster les autorisations du fichier *.tar.gz pour qu’il soit lisible de manière universelle.

  2. Connectez-vous à l’interpréteur de commandes d’administration.

  3. Utilisez la commande ghe-hook-env-create en tapant, comme premier argument, le nom souhaité pour l’environnement et, comme deuxième argument, le chemin local complet ou l’URL d’un fichier *.tar.gz contenant votre environnement.

    admin@ghe-host:~$ ghe-hook-env-create AlpineTestEnv /home/admin/alpine.tar.gz
    > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.