查看建構結果

本頁面說明如何使用 Google Cloud 主控台、gcloud 指令列工具和 Cloud Build API 查看 Cloud Build 建構的相關資訊。

事前準備

如果您想使用本指南中的指令列範例,請安裝 gcloud 指令列工具

查看建構結果

如要查看建構記錄,實體除了需要 Cloud Build IAM 權限外,還必須具備下列任一 IAM 角色:

如要進一步瞭解在建立觸發條件後,在 Cloud Build 或 GitHub/GitHub Enterprise 中查看建構記錄所需的權限,請參閱「查看建構記錄」。

主控台

Google Cloud 主控台的「Build History」(建構歷史記錄) 選單可以顯示建構狀態 (例如成功或失敗)、來源、結果、建立時間、映像檔等相關資訊。

如要查看「Build History」(建構歷史記錄) 選單,請在 Google Cloud 控制台中開啟「Build History」(建構歷史記錄) 頁面:

開啟「Build History」(建構記錄) 頁面

系統隨即顯示「Build History」(建構歷史記錄) 頁面,其中包含最近建構的清單。

您可以使用「Filter」欄位篩選版本,也可以輸入查詢

如要查看其他資料欄,例如「觸發條件說明」和「構件」,請使用資料欄選取器

如要查看特定版本的詳細資料,請前往「Build History」,然後按一下指定的版本。系統隨即會顯示「Build details」(建構詳細資料) 頁面,並顯示建構作業的「Build Summary」(建構摘要)。「Build Summary」包含以下內容:

  • Build Log:建構作業記錄。
  • 執行詳細資料:建構作業的詳細資料,包括環境變數和替換項目。
  • 建構依附元件:如果建構作業含有一或多個依附元件,這個分頁會顯示依附元件資訊,例如存放區網址和修訂版本。
  • 建構成果:建構作業的成果,例如容器映像檔、建構記錄或二進位檔。

您可以選取左側「步驟」表格中的步驟,查看建構記錄或特定建構步驟的執行詳細資料。

gcloud

gcloud builds list 指令可顯示所有建構。

如要查看您的建構,請執行以下指令:

gcloud builds list

畫面會顯示類似以下的輸出:

ID                                    CREATE_TIME                DURATION  SOURCE                                                                                      IMAGES                                              STATUS
3a2055bc-ccbd-4101-9434-d376b88b8940  2018-02-16T18:33:26+00:00  23S       gs://gcb-docs-project_cloudbuild/source/1518806004.25-db1e250a7b7f496eb8242bfee5ac308e.tgz  us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image (+1 more)  SUCCESS
900704ca-7a0c-4569-ac08-884593c19aac  2018-02-16T18:32:32+00:00            gs://gcb-docs-project_cloudbuild/source/1518805951.23-03dd53d16f684c568fa2bb7ff7ebda06.tgz  -                                                   FAILURE
021f9ede-ddaa-4cfb-8988-60142b015ebd  2018-02-14T15:48:44+00:00  10S       gs://gcb-docs-project_cloudbuild/source/1518623322.56-9cd088ffc1e04f5aa6040728772d0c2a.tgz  -                                                   SUCCESS
8126d538-3c43-4304-a14c-33aceec8cb97  2018-02-14T15:46:13+00:00  10S       gs://gcb-docs-project_cloudbuild/source/1518623172.09-327c02585a4e44e782ac97dd80d5a5d5.tgz  us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image (+1 more)  SUCCESS

如要查看特定建構的相關詳細資料,請執行以下指令:

gcloud builds describe [BUILD_ID]

其中 [BUILD_ID] 是您要取得詳細資料的建構 ID。

畫面會顯示類似以下的輸出:

createTime: '2018-02-22T14:49:54.066666971Z'
finishTime: '2018-02-22T14:50:05.463758Z'
id: bcdb9c48-d92c-4489-a3cb-08d0f0795a0b
images:
- us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image
logUrl: https://console.cloud.google.com/cloud-build/builds/bcdb9c48-d92c-4489-a3cb-08d0f0795a0b?project=gcb-docs-project
logsBucket: gs://404889597380.cloudbuild-logs.googleusercontent.com
projectId: gcb-docs-project
results:
    buildStepImages:
    - sha256:a4363bc75a406c4f8c569b12acdd86ebcf18b6004b4f163e8e6293171462a79d
    images:
    - digest: sha256:1b2a237e74589167e4a54a8824f0d03d9f66d3c7d9cd172b36daa5ac42e94eb9
      name: us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image
      pushTiming:
          endTime: '2018-02-22T14:50:04.731919081Z'
          startTime: '2018-02-22T14:50:00.874058710Z'
      - digest: sha256:1b2a237e74589167e4a54a8824f0d03d9f66d3c7d9cd172b36daa5ac42e94eb9
        name: us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image:latest
        pushTiming:
            endTime: '2018-02-22T14:50:04.731919081Z'
            startTime: '2018-02-22T14:50:00.874058710Z'
source:
    storageSource:
        bucket: gcb-docs-project_cloudbuild
        generation: '1519310993665963'
        object: source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz
sourceProvenance:
    fileHashes:
        gs://gcb-docs-project_cloudbuild/source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz#1519310993665963:
        fileHash:
        - value: -aRYrWp2mtfKhHSyWn6KNQ==
    resolvedStorageSource:
        bucket: gcb-docs-project_cloudbuild
        generation: '1519310993665963'
        object: source/1519310992.2-8465b08c79e14e89bee09adc8203c163.tgz
startTime: '2018-02-22T14:49:54.966308841Z'
status: SUCCESS
steps:
- args:
  - build
  - --no-cache
  - -t
  - us-east1-docker.pkg.dev/gcb-docs-project/quickstart-image
  - .
  name: gcr.io/cloud-builders/docker
  status: SUCCESS
  timing:
      endTime: '2018-02-22T14:50:00.813257422Z'
      startTime: '2018-02-22T14:50:00.102600442Z'
timeout: 600s
timing:
    BUILD:
        endTime: '2018-02-22T14:50:00.873604173Z'
        startTime: '2018-02-22T14:50:00.102589403Z'
    FETCHSOURCE:
        endTime: '2018-02-22T14:50:00.087286880Z'
        startTime: '2018-02-22T14:49:56.962717504Z'
    PUSH:
        endTime: '2018-02-22T14:50:04.731958202Z'
        startTime: '2018-02-22T14:50:00.874057159Z'

步驟狀態與建構狀態

建構完成後,Cloud Build 會為建構提供整體 status,以及每個個別建構步驟的 status

下表大致列出了建構或步驟成功、逾時或失敗時的狀態:

事件 建構狀態 步驟狀態
建構成功 SUCCESS 所有步驟都標示了 SUCCESS
允許失敗步驟的建構作業成功 SUCCESS
建構失敗 FAILURE
  • 失敗的步驟會標示 FAILED
  • 在建構終止之前成功的步驟會標示 SUCCESS
  • 執行過程中的步驟會標示 CANCELLED
  • 尚未開始執行的步驟會標示 QUEUED
使用者取消建構 CANCELLED
  • 在取消建構之前成功的步驟會標示 SUCCESS
  • 執行過程中的步驟會標示 CANCELLED
  • 尚未開始執行的步驟會標示 QUEUED
建構逾時 TIMEOUT
  • 在建構作業逾時之前成功的步驟會標示 SUCCESS
  • 執行過程中的步驟會標示 CANCELLED
  • 尚未開始執行的步驟會標示 QUEUED
步驟逾時 FAILED
  • 逾時的步驟會標示 TIMEOUT
  • 在逾時的步驟之前成功的步驟會標示 SUCCESS
  • 執行過程中的步驟會標示 CANCELLED
  • 尚未開始執行的步驟會標示 QUEUED

如要查看每個步驟與建構的狀態,請執行 gcloud builds describe 指令:

gcloud builds describe <var>BUILD_ID</var>

其中 BUILD_ID 是建構的 ID。

以下程式碼片段示範建構中步驟逾時的每個步驟狀態:

status: FAILURE
steps:
- args:
  - sleep
  - '60'
id: long sleep
name: alpine
status: CANCELLED
timing:
    endTime: '2018-02-26T14:09:18.531368493Z'
    startTime: '2018-02-26T14:09:11.023235026Z'
waitFor:
- '-'
- args:
- sleep
- '3'
id: shorty
name: alpine
status: SUCCESS
timeout: 60s
timing:
    endTime: '2018-02-26T14:09:15.497724138Z'
    startTime: '2018-02-26T14:09:11.023676903Z'
waitFor:
- '-'
- args:
  - sleep
  - '60'
name: alpine
status: TIMEOUT
timeout: 3s
timing:
    endTime: '2018-02-26T14:09:18.527488475Z'
    startTime: '2018-02-26T14:09:15.497736775Z'
waitFor:
- shorty
- args:
  - 'false'
name: alpine
status: QUEUED
waitFor:
- long sleep
timeout: 60s

使用查詢篩選建構結果

如要尋找符合特定條件的建構資訊,請在Google Cloud 主控台的「Build history」(建構歷史記錄) 頁面,於「Filter Builds」(篩選建構) 欄位中提供查詢字串。例如,您可以查詢失敗的建構 (狀態欄位值為 FAILURE 的建構)、在某一時間之後建立的建構、加上標記的建構和其他諸如此類的條件。

查詢的支援欄位

您可以根據下列欄位的值查詢建構:

  • status
  • build_id
  • trigger_id
  • source.storage_source.bucket
  • source.storage_source.object
  • source.repo_source.repo_name
  • source.repo_source.branch_name
  • source.repo_source.tag_name
  • source.repo_source.commit_sha
  • source_provenance.resolved_repo_source.commit_sha
  • results.images.name
  • results.images.digest
  • options.requested_verify_option
  • tags
  • images
  • create_time
  • start_time
  • finish_time

以點標記法 (.) 列出的欄位為子欄位。

建構查詢字串

查詢字串使用一般格式:

field="value"

請使用點標記法來指定子欄位,例如 results.images.name。查詢支援 =!= 比較運算子,對於有數值的欄位 (例如 create_time),也支援 >>=<<=

您可以使用布林 ANDOR 運算式來建立複合式查詢。

常見範例查詢

如要查詢所有成功的建構:

status="SUCCESS"

如要查詢所有尚未完成的建構:

status="QUEUED" OR status="WORKING"

如要查詢具有特定結果映像檔名稱的建構:

(status="SUCCESS" OR status="FAILURE") AND \
    results.images.name="us-east1-docker.pkg.dev/my-project/my-image"

如要查詢所有加上 "prod" 標記的建構:

tags="prod"

如要查詢標記為已驗證的建構:

options.requested_verify_option="VERIFIED"

如要查詢來自 Cloud Storage 來源 (相對於 Cloud Source Repository) 的建構:

source.storage_source.bucket!=""

如要查詢具有特定結果摘要的建構:

results.images.digest="sha256:6c7147fe4c813845ac2a9aa6f937bb272b68784f647c4f64c7325723c7245c88"

如要查詢在特定時間 (世界標準時間時區) 之後開始,並在特定時間之前完成的建構:

create_time>"2016-10-12T18:43:49+00:00" AND finish_time<"2016-10-13T18:43:49+00:00"

使用標記篩選建構結果

您可以在設定檔中使用標記,讓您為建構分組,並篩選建構。您可以在標記中指定字串,例如 "prod""test"

標記的限制如下:

  • 每個標記的字元上限為 128 個字元
  • 您最多可為每個建構定義 64 個標記
  • 標記可在字串的任何位置包含英文字母、數字和底線。
  • 除了字串的第一個位置,標記中的任何位置都可以包含半形句號和連字號。

如要在建構中加上標記

  1. 在您的建構設定檔中,新增 tags 欄位:

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-east1-docker.pkg.dev/$PROJECT_ID/cb-demo-img', '.' ]
    images:
    - 'us-east1-docker.pkg.dev/$PROJECT_ID/cb-demo-img'
    tags:
    - 'test1'
    - 'test2'
    
  2. 如要在叢集中查看加上標記的版本,請在 gcloud builds list 中使用 --filter 選項。您可以指定單一或多個標記來篩選版本。

    • 如要依單一標記篩選版本,請在 tags 欄位中將標記指定為字串。以下指令會列出所有加上 'test1' 標記的版本:

       gcloud builds list --filter "tags='test1'"
      
    • 如要依據多個標記篩選建構作業,請使用「AND」、「OR」或「NOT」列出標記。下列指令會列出所有加上 'test1''test2' 標記,並加上 'test3' 標記的版本:

       gcloud builds list --filter "tags=('test1' OR 'test2') AND 'test3'"
      

    執行這些指令後,您會看到類似以下的輸出內容:

    ID                                    CREATE_TIME                DURATION  SOURCE                                                                             IMAGES                                 STATUS
    d33a9895-...                          ...                        1M45S     gs://...                                                                           us-east1-docker.pkg.dev/...            SUCCESS
    

後續步驟