ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2020-11-12. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの改善、新機能のためには、最新バージョンのGitHub Enterpriseにアップグレードしてください。 アップグレードに関する支援については、GitHub Enterprise supportに連絡してください。

pre-receiveフック環境の作成

pre-receiveフックを実行するには、デフォルトのpre-receive環境を使うか、カスタムの環境を作成します。

ここには以下の内容があります:

GitHub Enterprise Server の pre-receive 環境は、Linux の chroot 環境です。 pre-receiveフックはプッシュのイベントごとに実行されるので、高速かつ軽量でなければなりません。 こうしたチェックに必要となる環境は、通常最小限のものです。

GitHub Enterprise Server は、以下のパッケージを含むデフォルトの環境を提供します: awkbashcoreutilscurlfindgnupggrepjqsed

特定の言語のサポートなど、この環境が満たさない特定の要求があるなら、独自の64-bit Linux chroot環境を作成してアップロードできます。

Dockerを利用したpre-receiveフック環境の作成

pre-receiveフック環境の構築には、Linuxのコンテナ管理ツールが利用できます。 この例ではAlpine LinuxDockerを使っています。

  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を使ったpre-receiveフック環境の作成

  1. Linux の chroot 環境を作成します。

  2. chroot ディレクトリの gzip 圧縮された tar ファイルを作成します.

    $ cd /path/to/chroot
    $ tar -czf /path/to/pre-receive-environment.tar.gz .

    ノート:

    • /path/to/chrootのような、ファイルの先行するディレクトリパスをtarアーカイブに含めないでください。
    • chroot環境へのエントリポイントとして、/bin/shが存在し、実行可能でなければなりません。
    • 旧来のchrootと異なり、devディレクトリはpre-receiveフックのためのchroot環境では必要ありません。

chroot 環境の作成に関する詳しい情報については Debian Wiki の「Chroot」、Ubuntu Community Help Wiki の「BasicChroot」、または Alpine Linux Wiki の「Installing Alpine Linux in a chroot」を参照してください。

GitHub Enterprise Serverへのpre-receiveフック環境のアップロード

  1. Navigate to your enterprise account by visiting https://HOSTNAME/enterprises/ENTERPRISE-NAME, replacing HOSTNAME with your instance's hostname and ENTERPRISE-NAME with your enterprise account's name.

  2. Enterpriseアカウントのサイドバーで、 Settings(設定)をクリックしてください。

    Enterpriseアカウントサイドバー内の設定タブ

  3. " Setteings(設定)"の下で、Hooks(フック)をクリックしてください。

    Enterpriseアカウント設定サイドバー内のフックタブ

  4. [Manage environments] (環境を管理) をクリックします。

    環境を管理

  5. [Add environment] (環境を追加) をクリックします。

    環境を追加

  6. 希望する名前を [Environment name] (環境名) フィールドに入力します。

    環境名

  7. 環境が入っている *.tar.gz ファイルの URL を入力します。

    URL から環境をアップロード

  8. [Add environment] (環境を追加) をクリックします。

    環境を追加するボタン

管理シェル経由でのpre-receiveフック環境のアップロード

  1. 環境が入っている読み出し可能な *.tar.gz ファイルを Web のホストにアップロードしてその URL をコピーするか、このファイルを scp で GitHub Enterprise Server アプライアンスに転送してください。 scp を使う場合には、*.tar.gz ファイルの権限を外界から読めるように調整しなければならないかもしれません。

  2. 管理シェルに接続します。

  3. 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.