Hallo, Entdecker! An dieser Seite wird aktiv gearbeitet, oder sie wird noch übersetzt. Die neuesten und genauesten Informationen findest Du in unserer englischsprachigen Dokumentation.

Diese Version von GitHub Enterprise wurde eingestellt am 2021-03-02. Es wird keine Patch-Freigabe vorgenommen, auch nicht für kritische Sicherheitsprobleme. Für eine bessere Leistung, verbesserte Sicherheit und neue Features nimm ein Upgrade auf die neueste Version von GitHub Enterprise vor. Wende Dich an den GitHub Enterprise-Support, um Hilfe beim Upgrade zu erhalten.

Pre-Receive-Hooks-Umgebung erstellen

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

Inhalt dieses Artikels

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 bietet eine Standardumgebung. Diese enthält die folgenden Pakete: 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, können Sie Ihre eigene 64-Bit-Linux-chroot-Umgebung erstellen und hochladen.

Pre-Receive-Hook-Umgebung mit Docker erstellen

Sie können 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. Erstellen Sie die Datei Dockerfile.alpine-3.3, welche die folgenden Informationen enthält:

FROM gliderlabs/alpine:3.3
RUN apk add --no-cache git bash
  1. Erstellen Sie im Verzeichnis, in dem die Dockerfile.alpine-3.3 enthalten ist, 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
  1. Erstellen Sie einen Container:
$ docker create --name pre-receive.alpine-3.3 pre-receive.alpine-3.3 /bin/true
  1. Exportieren Sie 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 Appliance GitHub Enterprise Server hochgeladen werden.

Pre-Receive-Hook-Umgebung mit chroot erstellen

  1. Erstellen Sie eine Linux-chroot-Umgebung.

  2. Erstellen Sie eine gzip-komprimierte TAR-Datei des Verzeichnisses chroot.

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

Hinweise:

  • Schließe keine führenden Verzeichnispfade von Dateien innerhalb des tar-Archivs ein, wie beispielsweise /path/to/chroot.

  • /bin/sh muss existieren und als Einstiegspunkt in die chroot-Umgebung ausführbar sein.

  • Im Gegensatz zu herkömmlichen Chroots ist das Verzeichnis dev für Vorempfang-Hooks nicht erforderlich.

Weitere Informationen zum Erstellen einer chroot-Umgebung finden Sie unter „Chroot“ aus dem Debian-Wiki, „BasicChroot“ aus dem Hilfe-Wiki der Ubuntu-Community oder „Installing Alpine Linux in a chroot (Alpine Linux in einem chroot installieren“ aus dem Alpine Linux-Wiki.

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

  1. Navigate to your enterprise account by visiting https://HOSTNAME/enterprises/ENTERPRISE-NAME, replacing HOSTNAME with your instance's hostname and ENTERPRISE-NAME with your enterprise account's name.
  1. Klicke in der Seitenleiste des Enterprise-Kontos auf Settings (Einstellungen).
    Registerkarte „Settings“ (Einstellungen) in der Seitenleiste des Enterprise-Kontos
  1. Klicken Sie unter „Settings“ (Einstellungen) auf Hooks.

    Registerkarte „Hooks“ auf der Seitenleiste mit den Einstellungen des Enterprise-Kontos

  2. Klicken Sie auf Manage environments (Umgebungen verwalten).

    Umgebungen verwalten

  3. Klicken Sie auf Add environment (Umgebung hinzufügen).

    Add Environment (Umgebung hinzufügen)

  4. Geben Sie den gewünschten Namen in das Feld Environment name (Name der Umgebung) ein.

    Environment name (Name der Umgebung)

  5. Geben Sie die URL der *.tar.gz-Datei ein, in der Ihre Umgebung enthalten ist.

    Upload environment from a URL (Umgebung über eine URL hochladen)

  6. Klicken Sie auf Add environment (Umgebung hinzufügen).

    Schaltfläche „Add environment“ (Umgebung hinzufügen)

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

  1. Laden Sie eine lesbare *.tar.gz-Datei, die Ihre Umgebung enthält, auf einen Webhost hoch, und kopieren Sie die URL, oder übertragen Sie die Datei über scp an die GitHub Enterprise Server-Appliance. Wenn Sie scp verwenden, müssen Sie die *.tar.gz-Dateiberechtigungen ggf. anpassen, damit die Datei allgemein lesbar ist.
  2. Stellen Sie eine Verbindung zur Verwaltungsshell her.
  3. Führen Sie den Befehl ghe-hook-env-create aus, und geben Sie den gewünschten Namen für die Umgebung als das erste Argument und den vollständigen lokalen Pfad oder die URL einer *.tar.gz-Datei, die Ihre Umgebung enthält, als das zweite 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.