Среда предварительного получения для 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.
-
Убедитесь, что Docker установлен в локальной среде.
-
Создайте файл
Dockerfile.alpine
, содержащий следующие сведения:FROM alpine:latest RUN apk add --no-cache git bash
-
Из рабочего каталога, содержащего
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
-
Создание контейнера:
docker create --name pre-receive.alpine pre-receive.alpine /bin/true
-
Экспортируйте контейнер Docker в сжатый файл
gzip``tar
:docker export pre-receive.alpine | gzip > alpine.tar.gz
Этот файл
alpine.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, BasicChroot на справочном вики-сайте сообщества Ubuntu или Установка Alpine Linux в chroot на вики-сайте Alpine Linux.
Отправка среды обработчика предварительного получения на GitHub Enterprise Server
-
В правом верхнем углу GitHub Enterprise Serverщелкните фото профиля, а затем выберите параметры Enterprise.
-
На боковой панели учетной записи предприятия щелкните Параметры.
-
В разделе " Параметры", нажмите кнопку "Перехватчики".
-
Щелкните Управление средами.
-
Щелкните Добавить среду.
-
В поле "Имя среды" введите нужное имя.
-
В поле "Отправить среду из 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 AlpineTestEnv /home/admin/alpine.tar.gz > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.