Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

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.

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-3.3, die diese Informationen enthält:

    FROM gliderlabs/alpine:3.3
    RUN apk add --no-cache git bash
    
  3. Erstelle aus dem Arbeitsverzeichnis, das Dockerfile.alpine-3.3 enthält, ein 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. Erstelle einen Container:

    $ docker create --name pre-receive.alpine-3.3 pre-receive.alpine-3.3 /bin/true
  5. Exportiere den Docker-Container in eine gzip-komprimierte tar-Datei:

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

    Diese Datei alpine-3.3.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. Klicke oben rechts auf GitHub Enterprise Server auf dein Profilfoto und dann auf Unternehmenseinstellungen. „Unternehmenseinstellungen“ im Dropdownmenü für das Profilfoto auf GitHub Enterprise Server 1. Klicke in der Randleiste des Unternehmenskontos auf Einstellungen. Registerkarte „Einstellungen“ in der Randleiste des Unternehmenskontos 1. Klicke unter „ Einstellungen“ auf Hooks. Registerkarte „Hooks“ auf der Randleiste mit den Unternehmenskontoeinstellungen
  2. Klicke auf Umgebungen verwalten. Verwalten von Umgebungen
  3. Klicke auf Umgebung hinzufügen. Hinzufügen einer Umgebung
  4. Gib den gewünschten Namen im Feld Umgebungsname ein. Umgebungsname
  5. Gib die URL der *.tar.gz-Datei ein, in der deine Umgebung enthalten ist. Hochladen einer Umgebung über eine URL
  6. Klicke auf Umgebung hinzufügen. Schaltfläche „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-3.3.tar.gz
    > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.