手動でのビルドの開始

このページでは、gcloud コマンドライン ツールと Cloud Build API を使用して Cloud Build で手動でビルドを開始する方法について説明します。

始める前に

  • このガイドのコマンドラインの例を使用する場合、gcloud コマンドライン ツールをインストールします。
  • このガイドの API の例を使用する場合、Cloud Build API を有効にします。
  • Cloud Build のビルド構成を使用してビルドを行うには、ビルド構成ファイルを作成します。
  • Dockerfile を使用してビルドするには、Dockerfile を手元に用意します。
  • ビルドでソースコードが必要な場合は、手元に用意します。

ビルドの実行

Console

Google Cloud Platform Console を使用して手動で新しいビルドを開始することはできませんが、以前のビルドを再試行することはできます。

再ビルドするには:

  1. Google Cloud Platform Console の [Cloud Build] セクションで [ビルド履歴] ページを開きます。

    [ビルド履歴] ページを開く

  2. プロジェクトを選択し、[開く] をクリックします。

  3. [ビルド履歴] ページで、再ビルドするビルドをクリックします。

  4. [再ビルド] をクリックします。

gcloud

Dockerfile の使用:

Dockerfile には、Cloud Build で Docker イメージをビルドするために必要な情報がすべて記載されています。

Dockerfile を使用してビルドリクエストを実行するには、アプリケーション コード、Dockerfile、およびその他のアセットを含むディレクトリから次のコマンドを実行します。

gcloud builds submit --tag gcr.io/[PROJECT_ID]/[IMAGE_NAME] .

ここで:

  • [PROJECT_ID] は、GCP プロジェクトの名前です。
  • [IMAGE_NAME] は、ビルドするイメージです。
  • . は、ソースコードが現在の作業ディレクトリにあることを指定します。

ビルドされるイメージの完全な名前は gcr.io/[PROJECT_ID]/[IMAGE_NAME] です。Container Registry に push されるイメージは、レジストリ名の形式を使用します。

gcloud builds submit コマンドは、以下を行います。

  • . で参照される現在のディレクトリ内のアプリケーション コード、Dockerfile、その他のすべてのアセットを圧縮します。
  • ファイルを Cloud Storage バケットにアップロードします。
  • アップロードされたファイルを入力として使用して、ビルドを開始します。
  • 指定された名前を使用してイメージをタグ付けします
  • ビルドされたイメージを 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 --config [BUILD_CONFIG] [SOURCE_CODE]

ここで:

  • [BUILD_CONFIG] は、ビルド設定ファイルのパスです。
  • [SOURCE_CODE] は、パスまたは URL のソースコードです。

たとえば、次のコマンドは、Cloud Storage バケットにアーカイブされているソースコードを使用して cloudbuild.yaml ビルド リクエストを送信します。

    gcloud builds submit --config cloudbuild.yaml \
        gs://cloud-build-examples/node-docker-example.tar.gz

. を使用すると、ソースコードが現在の作業ディレクトリにあることを指定できます。

    gcloud builds submit --config cloudbuild.yaml .

gcloudignore: 上記のコマンドで、ビルドのソースコードを含めると、指定されたディレクトリにあるすべてのファイルが Google Cloud Platform にアップロードされ、ビルドが実行されます。ディレクトリ内の特定のファイルを除外する場合は、最上位のアップロード ディレクトリに .gcloudignore という名前のファイルを含めることができます。それにより指定されるファイルが無視されます。トップレベルのアップロード ディレクトリに .gcloudignore ファイルが存在せず、.gitignore ファイルが存在する場合、.gitignore で指定されるファイルに基づく Git 互換の .gcloudignore ファイルが、gcloud ツールにより生成されます。詳細については、gcloudignore のドキュメントをご覧ください。

ビルドに渡すソースコードがない場合は、--no-source フラグを使用します。

    gcloud builds submit --config [BUILD_CONFIG] --no-source

API

curl を使用してビルド リクエストを送信するには:

  1. 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 が docker ビルドステップを引数 build -t gcr.io/$PROJECT_ID/cb-demo-img . で呼び出します。

    ビルドされるイメージの完全な名前は gcr.io/$PROJECT_ID/cb-demo-img です。Container Registry に push されるイメージは、レジストリ名の形式を使用します。

    ビルドのコードソースは、圧縮された tar アーカイブである node-docker-example.tar.gz にあります。このファイルは cloud-build-examples という Cloud Storage バケットに保存されています。

  2. 次のコマンドを実行します。

    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]/builds
    

    [PROJECT-ID] は GCP のプロジェクト ID です。

    このコマンドでは、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/gcr/builds/...?project=$PROJECT-ID"
            }
        }
    }
    

    JSON レスポンスは Cloud Build API の Operation リソースを使用してモデル化されます。metadata フィールドは Build リソースを使用してモデル化されます。QUEUED ステータスはビルドが実行を待機している状態であることを示しています。

次のステップ

フィードバックを送信...