手動でのビルドの開始

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

始める前に

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

ビルドの実行

Console

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

再ビルドするには:

  1. Google Cloud 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] は、Cloud プロジェクトの名前です。
  • [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 は 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 バケットに保存されます。

  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] は Cloud プロジェクト ID です。

    このコマンドでは、curlprojects.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 ステータスはビルドが実行を待機している状態であることを示しています。

次のステップ