Eine Pre-Receive-Umgebung für GitHub Enterprise Server ist eine Linux-chroot
-Umgebung. Da Pre-Receive-Hooks bei jedem Push-Ereignis ausgeführt werden, sollten sie schnell und kompakt sein. Die für solche Überprüfungen benötigte Umgebung ist in der Regel minimal.
GitHub Enterprise Server stellt eine Standardumgebung bereit, die folgende Pakete enthält: awk
, bash
, coreutils
, curl
, find
, gnupg
, grep
, jq
, sed
.
Wenn eine bestimmte Anforderung vorliegt, die von dieser Umgebung nicht erfüllt wird, beispielsweise die Unterstützung einer bestimmten Sprache, kannst du deine eigene 64-Bit-Linux-chroot
-Umgebung erstellen und hochladen.
Bei der in der Pre-Receive-Hook-Umgebung verwendeten Git-Version muss es sich mindestens um die Version 2.11 handeln. Bei Verwendung von libgit2 müssen Sie mindestens Version 0.18 verwenden.
Bei Verwendung einer anderen Git-Implementierung muss sie relative Pfade in der Datei info/alternates
unterstützen.
Pre-Receive-Hook-Umgebung mit Docker erstellen
Du kannst ein Linux-Containerverwaltungstool zum Erstellen einer Pre-Receive-Hook-Umgebung verwenden. In diesem Beispiel werden Alpine Linux und Docker verwendet.
-
Erstelle die Datei
Dockerfile.alpine
, die diese Informationen enthält:FROM alpine:latest RUN apk add --no-cache git bash
-
Erstelle aus dem Arbeitsverzeichnis, das
Dockerfile.alpine
enthält, ein 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
-
Erstelle einen Container:
docker create --name pre-receive.alpine pre-receive.alpine /bin/true
-
Exportiere den Docker-Container in eine
gzip
-komprimiertetar
-Datei:docker export pre-receive.alpine | gzip > alpine.tar.gz
Diese Datei
alpine.tar.gz
kann auf die GitHub Enterprise Server-Appliance hochgeladen werden.
Pre-Receive-Hook-Umgebung mit chroot erstellen
-
Erstelle eine Linux-
chroot
-Umgebung. -
Erstelle eine
gzip
-komprimiertetar
-Datei deschroot
-Verzeichnisses.cd /path/to/chroot tar -czf /path/to/pre-receive-environment.tar.gz .
Note
- Schließe keine führenden Verzeichnispfade von Dateien wie beispielsweise
/path/to/chroot
innerhalb des tar-Archivs ein. /bin/sh
muss existieren und als Einstiegspunkt in die chroot-Umgebung ausführbar sein.- Im Gegensatz zu herkömmlichen Chroots ist das
dev
-Verzeichnis in der chroot-Umgebung für Pre-Receive-Hooks nicht erforderlich.
- Schließe keine führenden Verzeichnispfade von Dateien wie beispielsweise
Weitere Informationen zum Erstellen einer chroot-Umgebung findest du unter Chroot im Debian-Wiki, BasicChroot im Communityhilfe-Wiki für Ubuntu oder Installieren von Alpine Linux in einer chroot-Umgebung im Alpine Linux-Wiki.
Pre-Receive-Hook-Umgebung auf GitHub Enterprise Server hochladen
-
Klicken Sie in der oberen rechten Ecke von GitHub Enterprise Server auf Ihr Profilfoto und dann auf Unternehmenseinstellungen.
-
Klicken Sie auf der linken Seite der Seite in der Randleiste des Enterprise-Kontos auf Einstellungen.
-
Wähle unter „ Einstellungen“ die Option Hooks aus.
-
Klicke auf Umgebungen verwalten.
-
Klicke auf Umgebung hinzufügen.
-
Gib den gewünschten Namen im Feld „Umgebungsname“ ein.
-
Gib im Feld „Umgebung von einer URL hochladen“ die URL der
*.tar.gz
-Datei ein, die deine Umgebung enthält. -
Klicke auf Umgebung hinzufügen.
Pre-Receive-Hook-Umgebung über die Verwaltungsshell hochladen
-
Lade eine lesbare
*.tar.gz
-Datei, die deine Umgebung enthält, auf einen Webhost hoch, und kopiere die URL, oder übertrage die Datei überscp
an die GitHub Enterprise Server-Appliance. Wenn duscp
verwendest, musst du die*.tar.gz
-Dateiberechtigungen möglicherweise anpassen, damit die Datei allgemein lesbar ist. -
Stelle eine Verbindung zur Verwaltungsshell her.
-
Führe den Befehl
ghe-hook-env-create
aus, und gib den gewünschten Namen für die Umgebung als erstes Argument und den vollständigen lokalen Pfad oder die URL einer*.tar.gz
-Datei, die deine Umgebung enthält, als zweites Argument ein.admin@ghe-host:~$ ghe-hook-env-create AlpineTestEnv /home/admin/alpine.tar.gz > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.