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.
-
Vérifiez que Docker est installé localement.
-
Créez le fichier
Dockerfile.alpine
, contenant ces informations :FROM alpine:latest RUN apk add --no-cache git bash
-
À 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
-
Créez un conteneur :
docker create --name pre-receive.alpine pre-receive.alpine /bin/true
-
Exportez le conteneur Docker dans un fichier
tar
avec compressiongzip
: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
-
Créez un environnement Linux
chroot
. -
Créez un fichier
tar
avec compressiongzip
dans le répertoirechroot
.cd /path/to/chroot tar -czf /path/to/pre-receive-environment.tar.gz .
Note
- 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
.
- N’incluez pas le chemin de début des fichiers dans l’archive tar, par exemple
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
-
Dans le coin supérieur droit de GitHub Enterprise Server, cliquez sur votre photo de profil, puis sur Paramètres d’entreprise.
-
Sur le côté gauche de la page, dans la barre latérale du compte d’entreprise, cliquez sur Paramètres.
-
Sous « Paramètres », cliquez sur Hooks.
-
Cliquez sur Gérer les environnements.
-
Cliquez sur Ajouter un environnement.
-
Dans le champ « Nom de l’environnement », entrez le nom souhaité.
-
Dans le champ « Charger l’environnement à partir d’une URL », entrez l’URL du fichier
*.tar.gz
qui contient votre environnement. -
Cliquez sur Ajouter un environnement.
Chargement d’un environnement de hook de pré-réception avec l’interpréteur de commandes d’administration
-
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 avecscp
. Quand vous utilisezscp
, il peut être nécessaire d’ajuster les autorisations du fichier*.tar.gz
pour qu’il soit lisible de manière universelle. -
Connectez-vous à l’interpréteur de commandes d’administration.
-
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.