本頁面說明如何使用 Google Cloud 主控台、gcloud
指令列工具和 Cloud Build API 查看 Cloud Build 建構的相關資訊。
事前準備
如果您想使用本指南中的指令列範例,請安裝 gcloud
指令列工具。
查看建構結果
如要查看建構記錄,實體除了需要 Cloud Build IAM 權限外,還必須具備下列任一 IAM 角色:
如果建構記錄檔位於預設的 Cloud Storage 值區,請授予「專案 > 檢視者」角色。
如果建構記錄位於使用者指定的 Cloud Storage 值區,請授予 Storage 物件檢視者角色。
如要進一步瞭解在建立觸發條件後,在 Cloud Build 或 GitHub/GitHub Enterprise 中查看建構記錄所需的權限,請參閱「查看建構記錄」。
主控台
Google Cloud 主控台的「Build History」(建構歷史記錄) 選單可以顯示建構狀態 (例如成功或失敗)、來源、結果、建立時間、映像檔等相關資訊。
如要查看「Build History」(建構歷史記錄) 選單,請在 Google Cloud 控制台中開啟「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 |
|
使用者取消建構 | CANCELLED |
|
建構逾時 | TIMEOUT |
|
步驟逾時 | FAILED |
|
如要查看每個步驟與建構的狀態,請執行 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
),也支援 >
、>=
、<
和 <=
。
您可以使用布林 AND
與 OR
運算式來建立複合式查詢。
常見範例查詢
如要查詢所有成功的建構:
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 個標記
- 標記可在字串的任何位置包含英文字母、數字和底線。
- 除了字串的第一個位置,標記中的任何位置都可以包含半形句號和連字號。
如要在建構中加上標記:
在您的建構設定檔中,新增
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'
如要在叢集中查看加上標記的版本,請在
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
後續步驟
- 瞭解如何查看自動建構觸發條件的建構結果。
- 瞭解如何查看建構安全性深入分析資訊。
- 瞭解如何排解建構錯誤。