儲存及查看建構作業記錄

執行建構作業時,Cloud Build 會收集並儲存建構記錄。本頁說明如何儲存、查看及刪除建構記錄。

選擇要將建構記錄傳送到何處

您可以設定 Cloud Build 將建構記錄傳送至 Cloud Storage 值區、Cloud Logging 值區,或同時傳送至這兩個值區。

  • 如要控管所儲存建構記錄的保留期限,請將記錄傳送至 Cloud Logging。此外,Cloud Logging 也提供更多選項,可搜尋特定建構記錄的 bucket。

  • 在某些情況下,建構記錄產生後,要經過一段時間才會傳送至 Logging。將建構記錄傳送至 Cloud Storage 中的值區,或許可以縮短延遲時間。

Cloud Storage 和 Logging 都允許您將記錄儲存在 Google 建立的預設 bucket,或使用者建立的自訂 bucket。預設值區可讓您查看儲存在值區中的記錄,但無法變更值區的任何設定。如果您需要完全控管用於儲存建構記錄的 bucket,請將記錄傳送至使用者建立的 bucket。

將建構記錄檔儲存在預設值區中

Cloud Logging 和 Cloud Storage 都有預設值區,可供您儲存建構記錄。這些 buckets 由 Google 建立及擁有,可接收來自多個區域的記錄。如要將建構記錄傳送至其中一個值區,請使用下列其中一個值,設定建構設定檔的 LoggingMode

  • GCS_ONLY:記錄會儲存在預設的 Cloud Storage 值區中。

  • CLOUD_LOGGING_ONLY:記錄檔會儲存在預設的 Logging bucket 中。

  • LEGACY:記錄檔會儲存在這兩個預設值區中。

預設記錄檔值區的儲存記錄檔保留政策為 30 天。如要為 Logging 中儲存的建構記錄檔設定自訂保留政策,請將建構記錄檔儲存在自訂值區中。

預設 Cloud Storage 值區沒有保留政策。

將建構記錄儲存在使用者擁有的特定區域 Cloud Storage 值區中

如果您將建構記錄傳送至預設的 Cloud Storage 值區,Cloud Build 會將記錄儲存在 Google 指定的區域,該區域可能與您執行建構作業的位置不同。不過,您也可以設定建構作業,讓 Cloud Build 將建構記錄傳送至使用者擁有的 Cloud Storage 值區,該值區與您執行建構作業的地區相同。這項設定可讓您進一步控管建構記錄資料的位置,有助於遵守資料落地規定。

授予 IAM 權限

如果 Cloud Storage 值區和 Cloud Build 位於 Google Cloud 同一個專案,且您使用 Cloud Build 舊版服務帳戶,則該服務帳戶預設會具備必要的 IAM 權限。您不必授予任何額外權限。如果沒有,請按照下列步驟操作:

如要取得在使用者擁有的特定區域值區中儲存建構記錄的權限,請要求管理員授予您建構作業所用服務帳戶的儲存空間管理員 (roles/storage.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

設定特定區域的 Cloud Storage bucket

  1. 在建構設定檔中,新增 defaultLogsBucketBehavior 選項並將其值設為 REGIONAL_USER_OWNED_BUCKET

    YAML

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: [ 'build', '-t', 'us-central1-docker.pkg.dev/myproject/myrepo/myimage', '.' ]
    options:
      defaultLogsBucketBehavior: REGIONAL_USER_OWNED_BUCKET
    

    JSON

    {
      "steps": [
        {
          "name": "gcr.io/cloud-builders/docker",
          "args": [
            "build",
            "-t",
            "us-central1-docker.pkg.dev/myproject/myrepo/myimage",
            "."
          ]
        }
        ],
        "options": {
          "defaultLogsBucketBehavior": "REGIONAL_USER_OWNED_BUCKET"
        }
    }
    
  2. 使用建構設定檔,透過指令列、API觸發條件啟動建構作業。

    執行建構作業時,Cloud Build 會在您執行建構作業的區域中建立新的 bucket,然後將建構記錄儲存在這個 bucket 中。只要 REGIONAL_USER_OWNED_BUCKET 處於啟用狀態,同一專案和區域的後續建構作業就會使用現有 bucket。這個值區屬於使用者擁有,因此您可以像設定使用者建立的值區一樣設定這個值區。

如果您設定 REGIONAL_USER_OWNED_BUCKET 選項,然後在多個區域中建立版本,Cloud Build 會為您的建構記錄建立多個 bucket。

區域專屬的預設 Cloud Storage 值區沒有保留政策。不過,您可以設定物件生命週期規則,自動刪除值區中的建構記錄。

將建構作業記錄檔儲存在使用者建立的 bucket 中

使用者建立的值區可讓您進一步控管記錄檔值區的管理和設定。

將建構記錄檔儲存在使用者建立的 Cloud Logging 值區中

使用者建立的記錄檔值區可讓您調整所儲存建構記錄的保留期限。如要將建構記錄儲存在 Logging 中使用者建立的 bucket,請按照下列步驟操作:

授予 IAM 權限

如要取得將建構記錄儲存在使用者建立的 Cloud Logging 值區所需的權限,請要求管理員授予專案的「記錄設定寫入者」 (roles/logging.configWriter) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

設定記錄 bucket

  1. 建立 bucket,並為「保留期限」欄位設定值。

  2. 建立接收器 ,將建構記錄檔傳送至新值區:

    1. 為接收器的建構納入篩選器輸入下列內容:

      logName = "projects/PROJECT_ID/logs/cloudbuild"
      

      PROJECT-ID 替換為您的 Google Cloud 專案 ID。

    2. (選用) 如要防止記錄檔傳送至預設的 Logging bucket,請按照「停止在記錄檔 bucket 中儲存記錄項目」一文中的範例操作。

將建構記錄檔儲存在使用者建立的 Cloud Storage bucket 中

如要將建構記錄檔儲存在使用者建立的 Cloud Storage bucket 中,請按照下列步驟操作:

授予 IAM 權限

如果 Cloud Storage 值區和 Cloud Build 位於 Google Cloud 同一個專案,且您使用的是 Cloud Build 舊版服務帳戶,則 Cloud Build 舊版服務帳戶預設會具備必要的 IAM 權限。您不必授予任何額外權限。如果沒有,請按照下列步驟操作:

如要取得在使用者建立的 Cloud Storage 值區中儲存建構記錄的權限,請要求管理員在用於建構的服務帳戶中,授予您儲存空間管理員 (roles/storage.admin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

設定 Cloud Storage bucket

  1. 在 Google Cloud 專案中,建立 Cloud Storage bucket,並將其設為不保留任何資料,以便儲存建構記錄。

  2. 在建構設定檔中,新增指向您建立的 Cloud Storage 值區的 logsBucket 欄位,用來儲存建構記錄。下列範例建構設定檔包含建構容器映像檔的操作說明,並將建構記錄儲存在名為 mylogsbucket 的值區中:

    YAML

        steps:
        - name: 'gcr.io/cloud-builders/docker'
          args: [ 'build', '-t', 'us-east1-docker.pkg.dev/myproject/myimage', '.' ]
        logsBucket: 'gs://mylogsbucket'
        options:
          logging: GCS_ONLY
    

    JSON

        {
          "steps": [
           {
             "name": "gcr.io/cloud-builders/docker",
             "args": [
               "build",
               "-t",
               "us-east1-docker.pkg.dev/myproject/myimage",
               "."
             ]
           }
           ],
           "logsBucket": "gs://mylogsbucket",
           "options": {
             "logging": "GCS_ONLY"
           }
        }
    
  3. 使用建構設定檔,透過指令列、API觸發條件啟動建構作業。

建構完成後,Cloud Build 會將記錄儲存在建構設定檔中指定 Cloud Storage bucket。

記錄設定的優先順序

如果您在 logsBucket 中定義使用者建立的 Cloud Storage 值區,Cloud Build 會將建構記錄傳送至使用者建立的值區,而不是預設的 Cloud Storage 值區。

如果您要將 defaultLogsBucketBehavior 選項新增至現有的建構設定檔,且先前已設定 logginglogsBucket 選項,建議您刪除這些設定,以免設定之間發生衝突。具體來說,如果已設定下列項目,defaultLogsBucketBehavior將無法運作:

  • logging: CLOUD_LOGGING_ONLY,將建構記錄儲存在 Cloud Logging 中。
  • logging: NONE 即可關閉記錄功能。

如果您執行建構作業時,建構設定檔中未設定任何記錄選項,Cloud Build 會設定 logging: LEGACY,並將建構記錄儲存在預設的 Cloud Storage 值區。將 defaultLogsBucketBehavior 設為 REGIONAL_USER_OWNED_BUCKET 會覆寫 logging: LEGACY

查看建構作業記錄

如要查看建構記錄,請按照下列步驟操作:

授予 IAM 權限

如要取得必要權限,以便在 Cloud Storage 或 Logging 中查看建構記錄,請要求管理員將建構作業所用服務帳戶的下列 IAM 角色授予您:

  • 在使用者建立或擁有的 Cloud Storage bucket 中查看建構記錄:
    • Storage 物件檢視者 (roles/storage.objectViewer) - 要查看建構記錄的主體
    • 記錄檢視存取者 (roles/logging.viewAccessor):想要查看建構記錄的主體
  • 在預設 Cloud Storage bucket 中查看建構記錄: 檢視者 (roles/viewer) - 設定建構作業的專案
  • 在 Logging 中查看建構作業記錄: 記錄檢視者 (roles/logging.viewer) - 要查看建構作業記錄的主體

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

在 Google Cloud中查看建構作業記錄:

主控台

  1. 在 Google Cloud 控制台中開啟 Cloud Build 頁面。

    開啟 Cloud Build 頁面

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

  3. 在「Region」(區域) 下拉式選單中,選取建構作業的區域

  4. 在「Build history」(建構歷史記錄) 頁面中,選取特定建構。

  5. 在「Build details」(建構作業詳細資料) 頁面的「Steps」(步驟) 下方,按一下「Build summary」(建構作業摘要),即可查看整個建構作業的建構記錄,或選取建構步驟來查看該步驟的建構記錄。

  6. 如果記錄檔儲存在 Cloud Logging 中,請在「Build log」(建構記錄)面板中點選 圖示,即可在「記錄檔探索工具」中查看記錄檔。

gcloud

執行 gcloud builds log 指令,其中 build-id 是您要取得建構記錄的建構 ID。執行 gcloud builds submit 時,建構 ID 會顯示在建構提交程序結束時,執行 gcloud builds list 時則會顯示在 ID 欄中。

gcloud builds log build-id

在 GitHub 和 GitHub Enterprise 中查看建構記錄

如果您使用 gcloud CLI 或 Cloud Build API 建立 GitHubGitHub Enterprise 觸發條件,並指定 --include-logs-with-status 做為選項,則可以在 GitHub 和 GitHub Enterprise 中查看建構記錄。

如要在 GitHub 和 GitHub Enterprise 中查看建構作業記錄,請按照下列步驟操作:

  1. 前往與觸發條件相關聯的存放區。

  2. 前往提交清單。

  3. 找到要查看建構記錄的修訂版本資料列。

  4. 按一下該提交內容列中的結果圖示。

    系統會列出與提交內容相關的檢查。

  5. 找出要查看建構記錄的資料列,然後按一下「詳細資料」

    您會看到與認可相關聯的「摘要」頁面。 如果您使用 --include-logs-with-status 旗標建立觸發條件,頁面的「詳細資料」部分下方會顯示建構記錄。

刪除建構記錄和值區

如要取得刪除 Cloud Storage 中建構記錄和值區的必要權限,請要求管理員在用於建構的服務帳戶中,授予您下列 IAM 角色:

  • 在使用者建立或擁有的 Cloud Storage 值區中刪除建構記錄: Storage Admin (roles/storage.admin) - 刪除建構記錄的使用者或服務帳戶
  • 刪除使用者建立或擁有的 Cloud Storage bucket: Storage 管理員 (roles/storage.admin) - 刪除 bucket 的使用者或服務帳戶
  • 刪除使用者建立的記錄檔儲存空間: 記錄檔設定寫入者 (roles/logging.configWriter) - 您的專案

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

如要刪除使用者建立或擁有的 Cloud Storage bucket 中的建構記錄,請按照 Cloud Storage 說明文件中的「刪除物件」一節操作。

如要刪除使用者建立或擁有的 Cloud Storage bucket,請按照 Cloud Storage 說明文件中的「刪除 bucket」一節操作。

如要刪除使用者建立的記錄 bucket,請按照 Logging 說明文件中的「刪除 bucket」一節操作。

後續步驟