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.

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-3.3, contenant ces informations :

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

    $ docker build -f Dockerfile.alpine-3.3 -t pre-receive.alpine-3.3 .
    > Sending build context to Docker daemon 12.29 kB
    > Step 1 : FROM gliderlabs/alpine:3.3
    >  ---> 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-3.3 pre-receive.alpine-3.3 /bin/true
  5. Exportez le conteneur Docker dans un fichier tar avec compression gzip :

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

    Ce fichier alpine-3.3.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. « Paramètres d’entreprise » dans le menu déroulant de la photo de profil sur GitHub Enterprise Server 1. Dans la barre latérale du compte d’entreprise, cliquez sur Paramètres. Onglet Paramètres dans la barre latérale du compte d’entreprise 1. Sous «  Paramètres », cliquez sur Hooks. Onglet Hooks dans la barre latérale des paramètres du compte d’entreprise
  2. Cliquez sur Gérer les environnements. Gérer les environnements
  3. Cliquez sur Ajouter un environnement. Ajouter un environnement
  4. Entrez le nom souhaité dans le champ Nom de l’environnement. Nom de l’environnement
  5. Entrez l’URL du fichier *.tar.gz contenant votre environnement. Charger un environnement à partir d’une URL
  6. Cliquez sur Ajouter un environnement. Bouton 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-3.3.tar.gz
    > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.