手動啟動建構

本頁說明如何使用 gcloud 指令列工具與 Cloud Build API 在 Cloud Build 中手動啟動建構。

事前準備

  • 如要使用本指南提供的指令列範例,請安裝 gcloud 指令列工具
  • 如要使用本指南提供的 API 範例,請啟用 Cloud Build API
  • 如要使用 Cloud Build 建構設定進行建構,請建立建構設定檔
  • 如要使用 Dockerfile 建構,請準備好 Dockerfile
  • 如果您的建構需要原始程式碼,也請準備好原始程式碼。

執行建構

主控台

您無法使用 Google Cloud Platform 主控台手動啟動新建構,但是可以重試之前的建構。

如要重新建構

  1. 在 Google Cloud Platform 主控台的 Cloud Build 部分開啟「Build History」(建構歷史記錄) 頁面。

    開啟建構歷史記錄頁面

  2. 選取您的專案並按一下 [Open] (開啟)

  3. 在「Build history」(建構歷史記錄) 頁面中,按一下您要重新建構的建構。

  4. 按一下 [Rebuild] (重新建構)

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 的映像檔使用註冊資料庫名稱格式

gcloud builds submit 指令:

  • . 所指示,在目前目錄中壓縮您的應用程式程式碼 Dockerfile 及其他任何資產;
  • 將檔案上傳至 Cloud Storage 值區;
  • 使用上傳的檔案做為輸入開始建構;
  • 使用提供的名稱標記映像檔;以及
  • 將建構的映像檔推送至 Container Registry。

建構進行時,其輸出會顯示在您的殼層或終端機視窗中。建構完成時,畫面會顯示類似以下的輸出:

    DONE
    ---------------------------------------------------------------------------------
    ID                                    CREATE_TIME                DURATION STATUS
    $BUILD_ID                             2016-10-28T15:21:18+00:00  12S      SUCCESS

其中 $BUILD_ID 是建構的不重複 ID。

使用 Cloud Build 建構設定檔

若要使用建構設定提交建構,請執行下列指令:

    gcloud builds submit --config [BUILD_CONFIG] [SOURCE_CODE]

其中:

  • [BUILD_CONFIG] 是建構設定檔的路徑
  • [SOURCE_CODE] 是路徑或網址原始碼

例如,下列指令會使用儲存在 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 檔案,gcloud 工具將會產生與 Git 相容的 .gcloudignore 檔案來遵循您的 .gitignore 檔案。詳情請參閱 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 的映像檔使用註冊資料庫名稱格式

    建構的原始碼位於壓縮的 tar 封存 node-docker-example.tar.gz 中,此檔案儲存於名為 cloud-build-examplesCloud 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 會將 POST 呼叫中的 request.json 傳送到 projects.builds.create API 方法的 builds 端點。

    此指令會在您的殼層或終端機視窗中顯示有關您的建構的詳細資料。輸出結果為 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 狀態指示了建構正在等待執行。

後續步驟

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Build