Среда предварительного получения для GitHub Enterprise Server — это среда Linux chroot
. Так как перехватчики предварительного получения выполняются при каждом событии отправки, они должны быть быстрыми и легкими. Среда, необходимая для таких проверок, обычно будет минимальной.
GitHub Enterprise Server предоставляет среду по умолчанию, которая включает следующие пакеты: awk
, bash
, coreutils
, curl
, find
, gnupg
, grep
, jq
, sed
.
Если у вас есть определенное требование, которое не удовлетворяется данной средой, например поддержка определенного языка, вы можете создать и отправить собственную 64-разрядную среду Linux chroot
.
Версия Git, используемая в среде перехватчика предварительного получения, должна быть не менее 2.11 или если вы используете libgit2, необходимо использовать по крайней мере версию 0.18.
Если вы используете другую реализацию Git, она должна поддерживать относительные info/alternates
пути в файле.
Создание среды обработчика предварительного получения с помощью Docker
Для создания среды обработчика предварительного получения можно использовать средство управления контейнерами Linux. В этом примере используется Debian Linux и Docker.
-
Убедитесь, что Docker установлен в локальной среде.
-
Создайте файл
Dockerfile.debian
, содержащий следующие сведения:FROM --platform=linux/amd64 debian:stable RUN apt-get update && apt-get install -y git bash curl RUN rm -fr /etc/localtime /usr/share/zoneinfo/localtime
Примечание.
Образ Debian включает некоторые символы по умолчанию, которые, если не удалены, могут вызвать ошибки при выполнении скриптов в пользовательской среде. Символы удаляются в последней строке приведенного выше примера.
-
Из рабочего каталога, содержащего
Dockerfile.debian
, создайте образ:$ docker build -f Dockerfile.debian -t pre-receive.debian . > [+] Building 0.6s (6/6) FINISHED docker:desktop-linux > => [internal] load build definition from Dockerfile.debian > => [1/2] FROM docker.io/library/debian:latest@sha256:80dd3c3b9c6cecb9f1667e9290b3bc61b78c2678c02cbdae5f0fea92cc6 > => [2/2] RUN apt-get update && apt-get install -y git bash curl > => exporting to image > => => exporting layers > => => writing image sha256:b57af4e24082f3a30a34c0fe652a336444a3608f76833f5c5fdaf4d81d20c3cc > => => naming to docker.io/library/pre-receive.debian
-
Создание контейнера:
docker create --name pre-receive.debian pre-receive.debian /bin/true
-
Экспортируйте контейнер Docker в сжатый файл
gzip``tar
:docker export pre-receive.debian | gzip > debian.tar.gz
Этот файл
debian.tar.gz
готов к отправке на устройство GitHub Enterprise Server.
Создание среды обработчика предварительного получения с помощью chroot
-
Создайте среду Linux
chroot
. -
Создайте сжатый файл
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 для перехватчиков предварительного получения.
- Не включайте ведущие пути к каталогам файлов в архив tar, например
Дополнительные сведения о создании среды chroot см. в разделе Chroot из Debian Wiki.
Отправка среды обработчика предварительного получения на GitHub Enterprise Server
- В правом верхнем углу GitHub Enterprise Serverщелкните рисунок профиля, а затем выберите параметры Enterprise.
- В левой части страницы на боковой панели учетной записи предприятия щелкните Settings.
- В разделе " Settings", нажмите кнопку "Перехватчики".
- Щелкните Управление средами.
- Щелкните Добавить среду.
- В поле "Имя среды" введите нужное имя.
- В поле "Отправить среду из URL-адреса" введите URL-адрес
*.tar.gz
файла, содержащего вашу среду. - Щелкните Добавить среду.
Отправка среды перехватчика предварительного получения с помощью административной оболочки
-
Отправьте доступный для чтения файл
*.tar.gz
, содержащий среду, на веб-узел и скопируйте URL-адрес или перенесите файл на устройство GitHub Enterprise Server черезscp
. При использованииscp
может потребоваться настроить разрешения файла*.tar.gz
таким образом, чтобы файл был доступен для чтения. -
Подключение к административной оболочке.
-
Используйте команду
ghe-hook-env-create
и введите имя среды в качестве первого аргумента, а также полный локальный путь или URL-адрес файла*.tar.gz
, содержащего среду, в качестве второго аргумента.admin@ghe-host:~$ ghe-hook-env-create DebianTestEnv /home/admin/debian.tar.gz > Pre-receive hook environment 'DebianTestEnv' (2) has been created.