Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

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

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

Среда предварительного получения для 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-адреса" введите URL-адрес *.tar.gz файла, содержащего среду.
  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.