Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2024-03-26. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Создание среды обработчика предварительного получения

Чтобы выполнить перехватчики предварительного получения, используйте среду предварительного получения по умолчанию или создайте настраиваемую среду.

Среда предварительного получения для GitHub Enterprise Server — это среда Linux chroot. Так как перехватчики предварительного получения выполняются при каждом событии отправки, они должны быть быстрыми и легкими. Среда, необходимая для таких проверок, обычно будет минимальной.

GitHub Enterprise Server предоставляет среду по умолчанию, которая включает следующие пакеты: awk, bash, coreutils, curl, find, gnupg, grep, jq, sed.

Если у вас есть определенное требование, которое не удовлетворяется данной средой, например поддержка определенного языка, вы можете создать и отправить собственную 64-разрядную среду Linux chroot.

Создание среды обработчика предварительного получения с помощью Docker

Для создания среды обработчика предварительного получения можно использовать средство управления контейнерами Linux. В этом примере используется Alpine Linux и Docker.

  1. Убедитесь, что Docker установлен в локальной среде.

  2. Создайте файл Dockerfile.alpine, содержащий следующие сведения:

    FROM alpine:latest
    RUN apk add --no-cache git bash
    
  3. Из рабочего каталога, содержащего Dockerfile.alpine, создайте образ:

    $ 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. Создание контейнера:

    docker create --name pre-receive.alpine pre-receive.alpine /bin/true
    
  5. Экспортируйте контейнер Docker в сжатый файл gzip``tar:

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

    Этот файл alpine.tar.gz готов к отправке на устройство GitHub Enterprise Server.

Создание среды обработчика предварительного получения с помощью chroot

  1. Создайте среду Linux chroot.

  2. Создайте сжатый файл gzip``tar каталога chroot.

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

    Примечания

    • Не включайте ведущие пути к каталогам файлов в архив tar, например /path/to/chroot.
    • /bin/sh должен существовать и быть исполняемым как точка входа в среду chroot.
    • В отличие от традиционных chroot, каталог dev не требуется средой chroot для перехватчиков предварительного получения.

Дополнительные сведения о создании среды chroot см. в разделе Chroot на вики-сайте Debian, BasicChroot на справочном вики-сайте сообщества Ubuntu или Установка Alpine Linux в chroot на вики-сайте Alpine Linux.

Отправка среды обработчика предварительного получения на GitHub Enterprise Server

  1. В правом верхнем углу GitHub Enterprise Serverщелкните фото профиля, а затем выберите параметры Enterprise.

    Снимок экрана: раскрывающееся меню, которое отображается при щелчке фото профиля на GitHub Enterprise Server. Параметр "Параметры предприятия" выделен в темно-оранжевый контур.

  2. На боковой панели учетной записи предприятия щелкните Параметры.

  3. В разделе " Параметры", нажмите кнопку "Перехватчики".

  4. Щелкните Управление средами.

  5. Щелкните Добавить среду.

  6. В поле "Имя среды" введите нужное имя.

  7. В поле "Отправить среду из URL-адреса" введите URL-адрес *.tar.gz файла, содержащего вашу среду.

  8. Щелкните Добавить среду.

Отправка среды перехватчика предварительного получения с помощью административной оболочки

  1. Отправьте доступный для чтения файл *.tar.gz, содержащий среду, на веб-узел и скопируйте URL-адрес или перенесите файл на устройство GitHub Enterprise Server через scp. При использовании scp может потребоваться настроить разрешения файла *.tar.gz таким образом, чтобы файл был доступен для чтения.

  2. Подключение к административной оболочке.

  3. Используйте команду ghe-hook-env-create и введите имя среды в качестве первого аргумента, а также полный локальный путь или URL-адрес файла *.tar.gz, содержащего среду, в качестве второго аргумента.

    admin@ghe-host:~$ ghe-hook-env-create AlpineTestEnv /home/admin/alpine.tar.gz
    > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.