このトピックでは、Cloud Build と Cloud Source Repositories を使用してビルドを自動化する方法を説明します。
ユーザーが Cloud Source Repositories に格納されているファイルに変更を push するたびに新しいイメージを自動的にビルドするよう Cloud Build を構成できます。自動ビルドを開始するイベントは、ビルドトリガーと呼ばれます。これらのトリガーは、コンテナ イメージを最新の状態に維持するために役立ちます。また、それらを使用して機能ブランチをビルドしてテストすることもできます。
ビルドトリガーは、Dockerfile またはビルド構成ファイルに基づいてビルドを実行できます。
Dockerfile の使用
ビルド構成に Dockerfile を使用するには、Dockerfile ディレクトリを指定し、結果的生じるイメージの名前を指定する必要があります。Dockerfile の作成の詳細については、Docker のドキュメントをご覧ください。
Dockerfile とイメージ名を入力すると、ビルドで実行される docker build
コマンドのプレビューと、トリガー構成の概要が表示されます。
ビルド構成ファイルの使用
ビルド構成にビルド構成ファイルを使用するには、ビルド構成ファイルの場所を指定する必要があります。
ロケーションを設定すると、トリガーの概要が表示されます。
始める前に
Cloud Build API を有効にします。
Cloud Source Repositories にソースコードがあることを確認します。
Dockerfile またはビルド構成ファイルがあることを確認します。
デフォルトの Cloud Build サービス アカウント以外のサービス アカウントを使用する場合は、ユーザー指定のサービス アカウントの構成に関する Cloud Build のページをご覧ください。
その他の情報
ビルドトリガーは、リポジトリのシャロー クローンを使用します。シャロー クローンでは、自動ビルドをトリガーした単一の commit だけがワークスペースにチェックアウトされます。詳細とさらに多くのリポジトリ履歴を含める方法については、クローンのシャロー解除をご覧ください。
GitHub や Bitbucket などの別のホストされた Git プロバイダを使用していて、リポジトリを Cloud Source Repositories にミラーリングする必要がある場合は、作業している Google Cloud プロジェクトの
cloudbuilds.builds.create
権限を持っている必要があります。通常、この権限はcloudbuild.builds.editor
のロールを介して付与されます。初めて外部リポジトリでビルドトリガーを設定する場合は、そのリポジトリで承認を設定する必要があります。詳細については、リポジトリをリモートとして追加するをご覧ください。
外部リポジトリを設定すると、Cloud Source Repositories でリポジトリのミラーが作成されます。
Cloud Build の割り当てと制限の詳細については、Cloud Build ドキュメントの割り当てと上限をご覧ください。
ビルドトリガーを作成する
コンソール
Google Cloud Console で [トリガー] ページを開きます。
ページの上部にあるプロジェクト セレクタのプルダウン メニューからプロジェクトを選択します。
[開く] をクリックします。
[トリガーを作成] をクリックします。
次のトリガー設定を入力します。
名前: トリガーの名前を入力します。
説明(省略可): トリガーの説明を入力します。
イベント: トリガーを起動するリポジトリ イベントを選択します。
ブランチに push する: 特定のブランチに対して commit が行われたときにビルドを開始するトリガーを設定します。
新しいタグを push する: 特定のタグを含む commit が行われたときにビルドを開始するトリガーを設定します。
ソース: リポジトリと、イベントの監視対象となるブランチまたはタグを選択します。
- リポジトリ: 使用可能なリポジトリのリストから目的のリポジトリを選択します。新しいリポジトリに接続するには、ソース リポジトリへの接続をご覧ください。
ビルドが実行されると、Cloud Build で使用されるデフォルトの作業ディレクトリである
/workspace
にリポジトリのコンテンツがコピーされます。作業ディレクトリについて詳しくは、ビルド構成の概要ページをご覧ください。- ブランチまたはタグ: ブランチまたはタグの値にマッチングさせる正規表現を指定します。タグではスラッシュ(
/
)を使用できません。有効な正規表現の構文については、RE2 構文をご覧ください。
構成: ビルドに使用するリモート リポジトリにあるビルド構成ファイルを選択するか、インライン ビルド構成ファイルを作成します。
- タイプ: ビルドに使用する構成のタイプを選択します。
- Cloud Build 構成ファイル(yaml または json): 構成にビルド構成ファイルを使用します。
- Dockerfile: 構成には
Dockerfile
を使用します。 - Buildpacks: 構成には Buildpacks を使用します。
場所: 構成の場所を指定します。
- リポジトリ: 構成ファイルがリモート リポジトリにある場合は、ビルド構成ファイル、
Dockerfile
ディレクトリの場所、または Bullpack のディレクトリを指定します。ビルド構成タイプがDockerfile
または buildpack の場合、ビルドするイメージの名前と、必要に応じてビルドのタイムアウトを指定する必要があります。Dockerfile
または buildpack イメージ名を指定すると、ビルドが実行されるdocker build
またはpack
コマンドのプレビューが表示されます。 - buildpack の環境変数(省略可): 構成タイプとして
buildpacks
を選択した場合、[パック環境変数を追加] をクリックして buildpack 環境変数と値を指定します。buildpack 環境変数の詳細については、環境変数をご覧ください。 インライン: 構成オプションとして Cloud Build 構成ファイル(yaml または json)を選択した場合、インライン ビルド構成を指定できます。Google Cloud Console で [エディタを開く] をクリックして、YAML または JSON 構文でビルド構成ファイルを書き込みます。[完了] をクリックしてビルド構成ファイルを保存します。
- リポジトリ: 構成ファイルがリモート リポジトリにある場合は、ビルド構成ファイル、
- タイプ: ビルドに使用する構成のタイプを選択します。
サービス アカウント: トリガーを呼び出すときに使用するサービス アカウントを選択します。サービス アカウントを選択しない場合は、デフォルトの Cloud Build サービス アカウントが使用されます。
[作成] をクリックして、ビルドトリガーを保存します。
gcloud
次のコマンドを実行します。
gcloud beta builds triggers create cloud-source-repositories \
--repo=REPO_NAME \
--branch-pattern=BRANCH_PATTERN \ # or --tag-pattern=TAG_PATTERN
--build-config=BUILD_CONFIG_FILE \
--service-account=SERVICE_ACCOUNT \
--require-approval
ここで
- REPO_NAME はリポジトリの名前です。
- BRANCH_PATTERN は、ビルドを呼び出すリポジトリ内のブランチ名です。
- TAG_PATTERN は、ビルドを呼び出すリポジトリ内のタグ名です。
- BUILD_CONFIG_FILE はビルド構成ファイルのパスです。
- SERVICE_ACCOUNT(プレビュー)は、サービス アカウントに関連付けられたメールです。このフラグを含めない場合、デフォルトの Cloud Build サービス アカウントが使用されます。
- (省略可)
--require-approval
は、承認を必要とするようにトリガーを構成するのに含めるフラグです。
フラグの一覧については、gcloud
リファレンスで Cloud Source Repositories のトリガーを作成する方法をご覧ください。
Cloud Source Repositories を使用して gcloud
コマンドを実行してトリガーを作成すると、次のような出力が表示されます。
NAME CREATE_TIME STATUS
trigger-001 2019-10-30T20:45:03+00:00
ビルドトリガーを表示する
Google Cloud コンソールでトリガーを表示するには、Cloud Build の [トリガー] ページを開きます。
Cloud Source Repositories で特定のプロジェクトのトリガーを表示するには、右上の [設定]
をクリックしてから、[Cloud Build トリガー] をクリックします。ビルドトリガーをスキップする
たとえば、ドキュメントや構成ファイルを更新する場合など、ソースコードを変更するだけで、ビルドをトリガーしたくない場合があります。
このようなケースでは、commit メッセージに [skip ci]
または [ci skip]
を追加すると、ビルドのトリガーをスキップできます。
例:
Author: A User <auser@example.com>
Date: Tue Apr 3 12:03:35 2018 -0700
Fixed customer affecting issue. [skip ci]
後でその commit でビルドを実行する場合は、[トリガーを実行] ボタンを使用します。
クローンのシャロー解除
Git リポジトリでソースをビルドするときに、Cloud Source Repositories はリポジトリのシャロー クローンを実行します。Cloud Source Repositories は、シャロー クローンを実行すると、ビルドをトリガーした単一の commit のみをワークスペースからチェックアウトし、そのソースからビルドします。Cloud Source Repositories では他のブランチや履歴がチェックアウトされません。これは効率を高めるために行われます。ビルドで単一の commit をビルドするために Cloud Source Repositories がリポジトリ全体と履歴をフェッチするときに、遅延は発生しません。
リポジトリの履歴を追加してビルドに含める場合は、ビルド構成ファイルにビルドステップを追加して、クローンのシャローを解除できます。例:
steps:
- name: gcr.io/cloud-builders/git
args: ['fetch', '--unshallow']
...
git fetch
について詳しくは、git のリファレンスをご覧ください。ビルド構成ファイルの作成方法については、ビルド構成の概要をご覧ください。
次のステップ
- Cloud Build でビルドを手動で開始する方法を学習する。
- アーティファクトのビルド、テスト、デプロイの詳細を確認する。