GitHub で自動構築

既に Docker Hub アカウントと Github アカウントを連結済みであれば、 自動構築レポジトリの作成 までスキップできます。

Docker Hub アカウントを GitHub アカウントにリンク

注釈

自動構築を使うためには、GitHub サービス・フックに対して Docker Hub が読み書きできる権限の設定が必要です。ここでは GItHub で権限を管理する方法を紹介しますが、選択の余地がないものです。あなたのアカウントでの操作に対して、私たちは何ら保証しません。

Bitbucket 上のレポジトリに対する自動構築をセットアップするには、 Docker Hub アカウントを Bitbucket アカウントにリンクする必要があります。これにより、Docker Hub レジストリに対し、自分の Bitbucket レポジトリを参照できるようにします。

リンクされたアカウントの情報を見るには、自分の Docker Hub profile にある「Settings」から「Linked Accounts & Services」に移動します。

リンクされたアカウント

GitHub にリンクするとき、「Public and Private」か「Limited Access」のどちらかを選ぶ必要があります。

「Public and Private」オプションは遣うのが最も簡単です。これは、レポジトリが Docker Hub に対してフルアクセス権を提供するからです。また、GitHub は GitHub organization もレポジトリに対してアクセスを付与できます。

「Limited Access」リンクを選ぶと、Docker Hub アカウントはパブリック・データとパブリック・レポジトリに対してのみ権限を与えます。

以下の画面では、GitHub アカウントを Docker Hub に認証するよう指示しています。リンク後は、任意のソース・レポジトリから自動構築レポジトリを作成できます。

Docker Hub に対するアクセス設定の表示や無効化をするには、 GitHub のユーザ・アプリケーション設定 に移動してください。

注釈

GItHub アカウントとのリンクを削除しても、過去にイメージを構築したことがある自動構築レポジトリは、そのまま利用できます。後ほど GitHub アカウントに再度リンクする場合、自動構築を有効にするには、 Docker Hub 上で「Start Build」オプションを使います。あるいは、GitHub レポジトリの webhook がそのまま残っていれば、以降のコミットがトリガになり(自動構築され)ます。

Limited リンクの GitHub アカウントで自動構築

GitHubアカウントのリンクで「Limited Access」リンクを選んだ場合は、自動構築レポジトリを作成するとき、Docker Hub 上の「Start Build」ボタンをトリガとするか、GitHub ウェブフックを手動で追加する必要があります。詳細は GitHub サービス・フック をご覧ください。

GitHub organizations

GitHub organizations と organizations からフォークしたレポジトリは、「Docker Hub Registry」アプリケーションを使うことで、自動構築が有効になります。これは organization に対して追加する必要があり、あわせてユーザに対しても適用されます。

確認もしくはリクエストのためには、GitHub ユーザの「Setting」ページに移動し、左のサイドバーから「Application」セクションを選び、「Docker Hub Registry」の「View」ボタンをクリックします。

organization の管理者は、organization の「Settings」画面にある「Third party access」から、Docker Hub Registry アプリケーションに対する許可を追加または削除します。この設定変更は、organization の全てのメンバに適用されます。

特定のユーザに対するより詳細なアクセス制限を行うには、GitHub の「People and Teams」インターフェースを通して設定します。

自動構築レポジトリの作成

Dockerfile を持つパブリックまたはプライベートの GitHub レポジトリで、 自動構築レポジトリの作成 が可能です。

ソース・レポジトリを選択すると、設定が行えます。

  • レポジトリの Docker Hub ユーザか組織の名前空間は、Docker Hub のアカウント名か、自分のアカウントが所属している Docker Hub グループ名のどちらです。
  • イメージを構築する Docker レポジトリ名。
  • レポジトリに対する説明。
  • Docker レポジトリに対する「Public」または「Private」の可視性。このアクセス権の変更は、レポジトリ作成後でも可能です。プライベート・レポジトリを Docker Hub の名前空間に使うと、自分とコラボレータ(collaborators)のみに見えるようになり、これらのユーザのみレポジトリからイメージの表示や取得が可能になります。チームのユーザや異なったユーザに対して異なったイメージ・タグを許可するなど、より細かなアクセス権限の設定ができます。おsのためには、Docker Hub のプライベート・レポジトリの管理権限を持つユーザによって、権限を付与する必要があります。
  • GitHub レポジトリにコミットが push されたとき、Docker イメージの再構築を有功化・無効化します。

また、1つまたは複数の git ブランチやタグを使い、Docker イメージとタグ名を使い、サブディレクトリのレポジトリのコンテキストに使えます。

レポジトリの説明を変更するには、レポジトリ表示画面の「Description」の部分をクリックします。「Full Description」のヵ所は、もし README.md ファイルがあるのであれば、次回の構築処理時に上書きされるので注意してください。

GitHub プライベート・サブモジュール

プライベート・サブモジュールを含む GitHub レポジトリとリンクできますが、構築時にエラーメッセージが表示されます。

通常、Docker Hub は GitHub レポジトリ上でデプロイ・キーをセットアップします。しかしながら、GitHUb は1つのレポジトリに対するデプロイ・キーにしかアクセスできません。

これを動くようにするには、GitHub 上に専用のユーザ・アカウントを作成し、そのアカウントに自動構築用のデプロイ・キーを与えます。この専用構築アカウントは、レポジトリの構築に必要な読み込み専用の権限だけに制限すべきです。

  1. まず、GitHub に新しいアカウントを作成します。このアカウントはメイン・レポジトリに対する読み込み権限を与え、必要があれば全てのサブモジュールに対しても設定します。
  1. アカウントを追加したら、メインの GitHub レポジトリや必要なサブモジュール・レポジトリにおいて、organization 上の「Read Only Team」にアカウントを追加します。
  1. 次に、メインの GitHub レポジトリからデプロイ・キーを削除します。これは GitHub レポジトリの「Deploy keys」設定のセクションで行います。
  1. 自動構築用のデプロイ・キーを、「Build Detail」メニューの下にある「Deploy Keys」に入れます。
  1. 専用の GitHub ユーザカウントで、Docker Hub Automated Build にデプロイ・キーを追加します。

GitHub サービス・フック

GitHub サービス・フックは、特定の git レポジトリに対する何らかのコミットが発生すると、GitHub が Docker Hub に通知します。

GitHub ユーザからの自動構築レポジトリを作成するとき、「Public and Private」リンクしている サービス・フックであれば、自動的に GItHub レポジトリに追加されます。

Docker Hub からリンクする GitHub アカウントが「Limited Access」であれば、サービス・フックは手動で追加する必要があります。

サービス・フックの追加・確認・変更は、GitHub にログイン後、レポジトリに移動し、「Settings」(歯車マーク)をクリックし、それから「Webhook & Services」を選びます。この設定を参照・編集するには、レポジトリに対する管理権限が必要です。

以下の図が「Docker」サービス・フックです。

GitHub サービスフック

もし「Docker」サービスを手動で追加した場合は、「Active」チェックボックスを選択してから「Update service」ボタンをクリックして、変更を保存します。