執行建構作業時,Cloud Build 會收集建構記錄並儲存在記錄檔 bucket 中。根據建構設定檔設定,建構記錄檔會儲存在 Cloud Logging 值區、Cloud Storage 值區,或同時儲存在這兩個位置。您也可以設定包含記錄檔的 Logging 或 Cloud Storage bucket 類型。儲存空間的位置和類型會影響您分析建構記錄的能力,以及對儲存空間設定的控制程度。
總覽
設定建構設定檔時,請考量下列事項:
如要控管儲存的建構記錄保留期限,請將記錄傳送至 Logging。與 Cloud Storage 相比,Logging 中的記錄檢視器也提供更多選項,可搜尋特定建構記錄的 bucket。不過,使用 Logging 時,建構記錄產生後,可能要過一段時間才會傳送至 Logging。
如要縮短建構記錄產生與 Logging 接收記錄之間的延遲時間,請將建構記錄傳送至 Cloud Storage 中的值區。
儲存空間擁有權也會影響您與儲存的建構記錄互動的方式。舉例來說,使用者擁有的值區可供您設定值區,而 Google Cloud擁有的值區是由 Google Cloud建立,使用者無法變更。記錄和 Cloud Storage 提供多種選項,可設定接收建構記錄的 bucket 類型。
值區位置
在建構設定檔中設定 logging 欄位,決定建構記錄的傳送位置:
GCS_ONLY:建構記錄會傳送至 Cloud Storage bucket。CLOUD_LOGGING_ONLY:建構記錄會傳送至 Logging 儲存空間。LEGACY:建構作業記錄檔會傳送至這兩個位置的 bucket。如果未定義logging,Cloud Build 會使用這個值。NONE:不會儲存建構作業記錄。
如果將建構記錄傳送至 Cloud Logging,請參閱「Cloud Logging 路由設定」,瞭解 Cloud Logging 值區選項。如果將建構記錄傳送至 Cloud Storage,請參閱下一節,瞭解可用的 Cloud Storage 值區。「值區擁有權注意事項」一節說明值區擁有權的優點和注意事項,無論值區位置為何,都適用於值區。
Cloud Storage 中的 bucket 選項
如果建構記錄會傳送至 Cloud Storage,Cloud Build 會評估建構設定檔中的 logsBucket 和 defaultLogsBucketBehavior 欄位,判斷接收建構記錄的 Cloud Storage bucket 類型。
logsBucket 欄位可以有任何類型的 bucket。如果已定義 logsBucket,無論 defaultLogsBucketBehavior 值為何,系統一律會將記錄傳送至 Cloud Storage 中的該值區。如果 logsBucket 未定義,則會使用 defaultLogsBucketBehavior 的值,如下所示:
REGIONAL_USER_OWNED_BUCKET:建構記錄會傳送至 Cloud Storage 中由 Cloud Build 建立且使用者擁有的 bucket。這個值區位於使用者專案中,且與建構作業使用相同區域。LEGACY_BUCKET:建構記錄會傳送至 Cloud Build 在 Google Cloud擁有的專案中建立並 Google Cloud擁有的 bucket。這個值與將這個欄位設為未定義相同。
從 Dockerfile 建構時的記錄儲存空間
如要從 Dockerfile 建構時設定建構記錄儲存空間,請在執行 gcloud builds
submit 時加入下列任一 default-buckets-behavior 旗標值:
regional-user-owned-bucket:建構記錄會傳送至 Cloud Storage 中由 Cloud Build 建立且使用者擁有的 bucket。這個值區位於使用者專案中,且與建構作業使用相同區域。legacy-bucket:建構記錄會傳送至 Cloud Build 在 Google Cloud擁有的專案中建立並 Google Cloud擁有的 bucket。這個值與將這個欄位設為未定義相同。
值區擁有權注意事項
無論您使用 Cloud Storage 或 Logging,我們都建議將建構記錄傳送至使用者擁有的 bucket。這可以是使用者建立的值區 (例如,您將 logsBucket 設為您建立的值區),也可以是 Cloud Build 建立但使用者擁有的值區 (例如,您為使用者擁有的地區值區設定設定)。這樣一來,您隨時可以編輯 bucket 的特定屬性,以及查看 bucket 中的記錄。由於 Google Cloud擁有的 bucket 位於Google Cloud擁有的專案中,因此無法查看或編輯這些 bucket,且只能在「建構詳細資料」頁面的「建構記錄」部分查看建構記錄。
一般而言,使用者建立的 buckets 在設定 bucket 時最具彈性,無論是在建立 bucket 期間或之後都適用。不過,在這種情況下,請務必確保使用者建立的 bucket 符合建構需求。在某些情況下 (例如管理 bucket 區域),使用 Cloud Build 建立且使用者擁有的 bucket,可讓您將建構記錄傳送至 Cloud Storage 中預設提供的 bucket,且該 bucket 一律與建構位於相同區域。如要進一步瞭解這個使用案例,請參閱下列章節:
值區區域的注意事項
建議您設定建構值區,使其與建構作業的區域一致,因為這樣有助於符合資料落地規定。如要以這種方式對齊區域,請注意下列事項:
在 Logging 和 Cloud Storage 中,使用者建立的 bucket 會使用 bucket 建立期間定義的區域。如果將使用者建立的 bucket 設為建構作業的
logging值,請確保該 bucket 的區域與建構作業區域相符。如果您將建構記錄設為使用 Cloud Storage 中使用者擁有的地區值區,建構記錄一律會傳送至與建構作業位於相同地區的值區。
Google Cloud擁有的值區會設為 Google Cloud定義的區域。因此,這個區域可能不一定與建構版本的區域一致。
在現有建構設定檔中新增 defaultLogsBucketBehavior
如果您要將 defaultLogsBucketBehavior 選項新增至現有的建構設定檔,且先前已設定 logging 或 logsBucket,建議您評估所有記錄儲存設定,確保記錄會依預期方式儲存。如果符合下列任一條件,Cloud Build 會忽略 defaultLogsBucketBehavior:
logging設為CLOUD_LOGGING_ONLY或NONE。logging設為GCS_ONLY或LEGACY,且已定義logsBucket。
如果您執行建構作業,但建構設定檔中未定義任何記錄儲存空間欄位,Cloud Build 會將 logging 設為 LEGACY。
後續步驟
- 瞭解如何儲存、查看及刪除建構作業記錄檔
- 瞭解 Cloud Build 建立的稽核記錄。
- 瞭解如何查看建構結果。
- 進一步瞭解 Cloud Build IAM 權限。