Skip to main content

Pre-Receive-Hooks-Umgebung erstellen

Verwende zum Ausführen von Pre-Receive-Hooks die standardmäßige Pre-Receive-Umgebung, oder erstelle eine benutzerdefinierte Umgebung.

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.

  1. Stelle sicher, dass Docker lokal installiert ist.

  2. Erstelle die Datei Dockerfile.alpine, die diese Informationen enthält:

    FROM alpine:latest
    RUN apk add --no-cache git bash
    
  3. 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
    
  4. Erstelle einen Container:

    docker create --name pre-receive.alpine pre-receive.alpine /bin/true
    
  5. Exportiere den Docker-Container in eine gzip-komprimierte tar-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

  1. Erstelle eine Linux-chroot-Umgebung.

  2. Erstelle eine gzip-komprimierte tar-Datei des chroot-Verzeichnisses.

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

    Hinweise:

    • 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.

Weitere Informationen zum Erstellen einer chroot-Umgebung findest du unter chroot im Debian-Wiki, BasicChroot im Community Help Wiki oder Installing Alpine Linux in a chroot (Installieren von Alpine Linux in einer chroot-Umgebung) im Alpine Linux Wiki.

Pre-Receive-Hook-Umgebung auf GitHub Enterprise Server hochladen

  1. Klicken Sie in der oberen rechten Ecke von GitHub Enterprise Server auf Ihr Profilfoto und dann auf Unternehmenseinstellungen.

    Screenshot des Dropdownmenüs, das angezeigt wird, wenn du auf GitHub Enterprise Server auf das Profilfoto klickst. Die Option „Unternehmenseinstellungen “ ist dunkelorange umrandet.

  2. Klicken Sie auf der linken Seite der Seite in der Randleiste des Enterprise-Kontos auf Einstellungen.

  3. Wähle unter „ Einstellungen“ die Option Hooks aus.

  4. Klicke auf Umgebungen verwalten.

  5. Klicke auf Umgebung hinzufügen.

  6. Gib den gewünschten Namen im Feld „Umgebungsname“ ein.

  7. Gib im Feld „Umgebung von einer URL hochladen“ die URL der *.tar.gz-Datei ein, die deine Umgebung enthält.

  8. Klicke auf Umgebung hinzufügen.

Pre-Receive-Hook-Umgebung über die Verwaltungsshell hochladen

  1. Lade eine lesbare *.tar.gz-Datei, die deine Umgebung enthält, auf einen Webhost hoch, und kopiere die URL, oder übertrage die Datei über scp an die GitHub Enterprise Server-Appliance. Wenn du scp verwendest, musst du die *.tar.gz-Dateiberechtigungen möglicherweise anpassen, damit die Datei allgemein lesbar ist.

  2. Stelle eine Verbindung zur Verwaltungsshell her.

  3. 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.