pre-receiveフック環境の作成
pre-receiveフックを実行するには、デフォルトのpre-receive環境を使うか、カスタムの環境を作成します。
ここには以下の内容があります:
- Dockerを利用したpre-receiveフック環境の作成
- chrootを使ったpre-receiveフック環境の作成
- GitHub Enterprise Serverへのpre-receiveフック環境のアップロード
- 管理シェル経由でのpre-receiveフック環境のアップロード
GitHub Enterprise Server の pre-receive 環境は、Linux の chroot 環境です。 pre-receiveフックはプッシュのイベントごとに実行されるので、高速かつ軽量でなければなりません。 こうしたチェックに必要となる環境は、通常最小限のものです。
GitHub Enterprise Server は、以下のパッケージを含むデフォルトの環境を提供します: awk、 bash、coreutils、curl、find、gnupg、grep、jq、sed
特定の言語のサポートなど、この環境が満たさない特定の要求があるなら、独自の64-bit 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 .注釈: - Do not include leading directory paths of files within the tar archive, such as /path/to/chroot.
- /bin/shmust exist and be executable, as the entry point into the chroot environment.
- Unlike traditional chroots, the devdirectory is not required by the chroot environment for pre-receive hooks.
 
- Do not include leading directory paths of files within the tar archive, such as 
chroot 環境の作成に関する詳しい情報については Debian Wiki の「Chroot」、Ubuntu Community Help Wiki の「BasicChroot」、または Alpine Linux Wiki の「Installing Alpine Linux in a chroot」を参照してください。
GitHub Enterprise Serverへのpre-receiveフック環境のアップロード
- 
任意のページの右上で をクリックします。  
- 
左のサイドバーで Businessをクリックしてください。  
- 
ビジネスアカウント名の下で Settings(設定)をクリックしてください。  
- 
左のサイトバーでHooks(フック)をクリックしてください。  
- 
[Manage environments] (環境を管理) をクリックします。  
- 
[Add environment] (環境を追加) をクリックします。  
- 
希望する名前を [Environment name] (環境名) フィールドに入力します。  
- 
環境が入っている *.tar.gzファイルの URL を入力します。 
- 
[Add environment] (環境を追加) をクリックします。  
管理シェル経由でのpre-receiveフック環境のアップロード
- 
環境が入っている読み出し可能な *.tar.gzファイルを Web のホストにアップロードしてその URL をコピーするか、このファイルをscpで GitHub Enterprise Server アプライアンスに転送してください。scpを使う場合には、*.tar.gzファイルの権限を外界から読めるように調整しなければならないかもしれません。
- 
管理シェルに接続します。 
- 
ghe-hook-env-createコマンドを使い、環境に与えたい名前を最初の引数に、環境が入っている*.tar.gzファイルの完全なローカルパスあるいは URL を 2 番目の引数に入力してください。admin@ghe-host:~$ ghe-hook-env-create AlpineTestEnv /home/admin/alpine-3.3.tar.gz > Pre-receive hook environment 'AlpineTestEnv' (2) has been created.