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.

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

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

Среда предварительного получения для 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-3.3, содержащий следующие сведения:

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

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

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

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

    Этот файл alpine-3.3.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 щелкните фотографию профиля и выберите Параметры предприятия. Раздел "Параметры предприятия" в раскрывающемся меню для фотографии профиля в GitHub Enterprise Server 1. На боковой панели корпоративной учетной записи щелкните Параметры. Вкладка "Параметры" на боковой панели корпоративной учетной записи 1. В разделе "Параметры " нажмите Обработчики. Вкладка "Обработчики" на боковой панели параметров корпоративной учетной записи
  2. Щелкните Управление средами. Управление средами
  3. Щелкните Добавить среду. Добавить среду
  4. Введите нужное имя в поле Имя среды. Имя среды
  5. Введите URL-адрес файла *.tar.gz, содержащего среду. Отправка среды из URL-адреса
  6. Щелкните Добавить среду. Кнопка "Добавить среду"

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

  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-3.3.tar.gz
    > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.