このページでは、Google Cloud CLI と Cloud Build API を使用して Cloud Build でビルドを手動で開始する方法について説明します。
始める前に
- このガイドのコマンドラインの例を使用する場合は、Google Cloud CLI をインストールします。
- Cloud Build のビルド構成を使用してビルドを行うには、ビルド構成ファイルを使用してビルドを行います。
Dockerfile
を使用してビルドするには、Dockerfile
を準備します。- ビルドでソースコードが必要な場合は、ソースコードを準備します。
必要な IAM 権限
- ビルドログをデフォルトのログバケットに保存する場合は、ビルドを実行するためにプロジェクト閲覧者ロールとCloud Build 編集者ロールが必要です。
- ユーザーが作成したログバケットにビルドログを保存する場合は、ビルドを実行するために Cloud Build 編集者ロールが必要です。
IAM ロールを付与する方法については、Cloud Build リソースへのアクセスを構成するをご覧ください。
ビルドの実行
gcloud
Dockerfile の使用:
Dockerfile
には、Cloud Build で Docker イメージをビルドするために必要な情報がすべて記載されています。
Dockerfile
を使用してビルド リクエストを実行するには、アプリケーション コード、Dockerfile
、その他のアセットが存在するディレクトリから次のコマンドを実行します。
gcloud builds submit --region=us-west2 --tag gcr.io/project-id/image-name .
ここで
- project-id は、Cloud プロジェクトの名前です。
- image-name は、ビルドするイメージです。
.
は、ソースコードが現在の作業ディレクトリにあることを指定します。
ビルドされるイメージのフルネームは「gcr.io/project-id/image-name」です。Container Registry に push されるイメージは、レジストリ名の形式を使用します。
gcloud builds submit
コマンド:
.
で参照される現在のディレクトリ内のアプリケーション コード、Dockerfile
、その他のすべてのアセットを圧縮します。- ファイルを Cloud Storage バケットにアップロードします。
- アップロードされたファイルを入力として使用し、ロケーション
us-west2
のビルドを開始します。 - 指定された名前を使用してイメージをタグ付けします。
- ビルドされたイメージを Container Registry に push します。
ビルドの進行中は、出力がシェルまたはターミナル ウィンドウに表示されます。ビルドが完了すると、次のような出力が表示されます。
DONE
---------------------------------------------------------------------------------
ID CREATE_TIME DURATION STATUS
$BUILD_ID 2016-10-28T15:21:18+00:00 12S SUCCESS
ここで、$BUILD_ID
はビルドの一意の識別子です。
Cloud Build のビルド構成ファイルの使用:
ビルド構成を使用してビルドを送信するには、次のコマンドを実行します。
gcloud builds submit --region=us-west2 --config build-config source-code
ここで
- build-config は、ビルド構成ファイルへのパスです。
- source-code は、パスまたは URL のソースコードです。
Cloud プロジェクトで初めて gcloud builds submit
を実行すると、Cloud Build はそのプロジェクトに [YOUR_PROJECT_NAME]_cloudbuild
という名前の Cloud Storage バケットを作成します。Cloud Build はこのバケットを使用して、ビルドに使用するソースコードを保存します。Cloud Build は、このバケット内のコンテンツを自動的に削除しません。ビルドで使用しなくなったオブジェクトを削除するには、バケットでライフサイクル構成を設定するか、手動でオブジェクトを削除します。
次のコマンドは、Cloud Storage バケットに保存されたアーカイブ済みのソースコードを使用して cloudbuild.yaml
ビルド リクエストを送信します。
gcloud builds submit --region=us-west2 --config cloudbuild.yaml \
gs://cloud-build-examples/node-docker-example.tar.gz
.
を使用すると、ソースコードが現在の作業ディレクトリにあることを指定できます。
gcloud builds submit --region=us-west2 --config cloudbuild.yaml .
gcloudignore: 上記のコマンドで、ビルドのソースコードを含めると、指定されたディレクトリにあるすべてのファイルが Google Cloud Platform にアップロードされ、ビルドが実行されます。ディレクトリ内の特定のファイルを除外する場合は、最上位のアップロード ディレクトリに .gcloudignore
という名前のファイルを含めることができます。それにより指定されるファイルが無視されます。トップレベルのアップロード ディレクトリに存在するファイルが .gcloudignore
ではなく .gitignore
の場合は、.gitignore
で指定されるファイルに基づく Git 互換の .gcloudignore
ファイルが、gcloud CLI によって生成されます。詳細については、gcloudignore
のドキュメントをご覧ください。
ビルドに渡すソースコードがない場合は、--no-source
フラグを使用します。build-config はビルド構成ファイルのパスです。
gcloud builds submit --region=us-west2 --config build-config --no-source
API
を使用してビルド リクエストを送信curl
するには:
次の内容のファイルを
request.json
という名前で作成します。{ "source": { "storageSource": { "bucket": "cloud-build-examples", "object": "node-docker-example.tar.gz" } }, "steps": [{ "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/$PROJECT_ID/my-image", "." ] }], "images": [ "gcr.io/$PROJECT_ID/my-image" ] }
このビルド リクエストで、Cloud Build は
build -t gcr.io/$PROJECT_ID/cb-demo-img .
引数を使用してdocker
ビルドステップを呼び出します。ビルドするイメージの完全名は
gcr.io/$PROJECT_ID/cb-demo-img
です。 Container Registry に push されるイメージは、レジストリ名の形式を使用します。ビルドのコードソースは、圧縮された
tar
アーカイブであるnode-docker-example.tar.gz
にあります。ファイルは、cloud-build-examples
という名前の Cloud Storage バケットに保存されます。次のコマンドを実行します。
project-id
は Cloud プロジェクト ID、REGION はサポートされているリージョンのいずれかです。curl -X POST -T request.json -H "Authorization: Bearer $(gcloud config config-helper \ --format='value(credential.access_token)')" \ https://cloudbuild.googleapis.com/v1/projects/project-id/locations/REGION/builds
このコマンドでは、
curl
が projects.builds.create API メソッドのbuilds
エンドポイントに対する POST 呼び出しでrequest.json
を送信します。このコマンドは、ビルドの詳細をシェルまたはターミナル ウィンドウに表示します。出力は JSON レスポンスになり、次のように表示されます。
{ "name": "operations/build/$PROJECT-ID/NmZhZW...", "metadata": { "@type": "type.googleapis.com/google.devtools.cloudbuild.v1.BuildOperationMetadata", "build": { "id": $BUILD-ID, "status": "QUEUED", "source": { "storageSource": { "bucket": "cloud-build-examples", "object": "node-docker-example.tar.gz" } }, "createTime": "2017-05-12T18:58:07.341526Z", "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "gcr.io/$PROJECT-ID/cb-demo-img", "." ] } ], "timeout": "600s", "images": [ "gcr.io/$PROJECT-ID/cb-demo-img" ], "projectId": $PROJECT-ID, "logsBucket": "gs://...", "sourceProvenance": { "resolvedStorageSource": { "bucket": "cloud-build-examples", "object": "node-docker-example.tar.gz", "generation": "..." } }, "logUrl": "https://console.cloud.google.com/cloud-build/builds/...?project=$PROJECT-ID" } } }
JSON レスポンスは、Cloud Build API の
Operation
リソースを使用してモデル化されます。metadata
フィールドは、Build
リソースを使用してモデル化されます。QUEUED
ステータスはビルドが実行を待機している状態であることを示しています。
次のステップ
- 手動トリガーの作成方法を学習する。
- ローカルでのビルドとデバッグの方法を学習する。
- ビルド結果を表示する方法を学習する。
- ビルドエラーをトラブルシューティングする方法について学習する。