GitHub Enterprise Server の受信前環境は Linux chroot 環境です。 pre-receiveフックはプッシュのイベントごとに実行されるので、高速かつ軽量でなければなりません。 こうしたチェックに必要となる環境は、通常最小限のものです。
GitHub Enterprise Server には、次のパッケージを含む既定の環境が用意されています: awk、bash、coreutils、curl、find、gnupg、grep、jq、sed。
特定の言語のサポートなど、この環境が満たさない特定の要求があるなら、独自の 64 ビット Linux chroot 環境を作成してそれをアップロードできます。
Dockerを利用したpre-receiveフック環境の作成
pre-receiveフック環境の構築には、Linuxのコンテナ管理ツールが利用できます。 この例では、Alpine Linux と Docker を使用します。
-
ローカルに Docker がインストールされていることを確実にします。
-
次の情� �を含むファイル
Dockerfile.alpine-3.3を作成します。FROM gliderlabs/alpine:3.3 RUN apk add --no-cache git bash -
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 -
コンテナを作成します:
$ docker create --name pre-receive.alpine-3.3 pre-receive.alpine-3.3 /bin/true -
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を使ったpre-receiveフック環境の作成
-
Linux
chroot環境を作成します。 -
chrootディレクトリのgzipで圧縮されたtarファイルを作成します。$ cd /path/to/chroot $ tar -czf /path/to/pre-receive-environment.tar.gz .注:
- tar アーカイブ内に、ファイルの先� �のディレクトリ パスは含めないでく� さい (
/path/to/chrootなど)。 - chroot 環境へのエントリ ポイントとして、
/bin/shが存在し、実行可能でなければなりません。 - 旧来の chroot と異なり、chroot 環境では受信前フックのために
devディレクトリを必要とすることはありません。
- tar アーカイブ内に、ファイルの先� �のディレクトリ パスは含めないでく� さい (
chroot 環境の作成方法の詳細については、Debian Wiki の「Chroot」、Ubuntu Community Help Wiki の「BasicChroot」、Alpine Linux Wiki の 「chroot への Alpine Linux のインストール」を参照してく� さい。
GitHub Enterprise Serverへのpre-receiveフック環境のアップロード
- GitHub Enterprise Server の右上で、ご自分のプロファイル写真をクリックしてから、 [Enterprise 設定] をクリックします。
1. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。
1. [ 設定] で、 [フック] をクリックします。
![[Enterprise アカウント設定] サイドバーの [フック] タブ](https://github.github.com/docs-ghes-3.3/assets/cb-23800/images/help/business-accounts/settings-hooks-tab.png)
- [環境を管理する] をクリックします。

- [環境の追� ] をクリックします。

- [環境名] フィールドに目的の名前を入力します。

- ご利用の環境を含む
*.tar.gzファイルの URL を入力します。
- [環境の追� ] をクリックします。
![[環境の追� ] ボタン](https://github.github.com/docs-ghes-3.3/assets/cb-19359/images/enterprise/site-admin-settings/add-environment-button.png)
管理シェル経由でのpre-receiveフック環境のアップロード
-
ご利用の環境が含まれている読み出し可能な
*.tar.gzファイルを Web のホストにアップロードし、その URL をコピーするか、またはそのファイルをscpを介して GitHub Enterprise Server アプライアンスに転送してく� さい。scpを使用する� �合には、*.tar.gzファイルの権限を外界から読めるように調整することが必要な� �合があります。 -
管理シェルに接続します。
-
ghe-hook-env-createコマンドを使用して、最初の引数として環境に使用する名前を入力し、2 番目の引数として環境を含む*.tar.gzファイルの完全なローカル パスまたは URL を入力します。admin@ghe-host:~$ ghe-hook-env-create AlpineTestEnv /home/admin/alpine-3.3.tar.gz > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.