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」ボタンをクリックして、変更を保存します。

参考

Automated Builds from GitHub
https://docs.docker.com/docker-hub/github/