本頁說明如何設定 Cloud Build,以建構、測試、容器化及部署 Python 應用程式。
Cloud Build 可讓您使用任何開放給大眾使用的容器映像檔執行開發工作,包括建構、測試、容器化、上傳至 Artifact Registry、部署及儲存建構記錄。Docker Hub 的公開python
映像檔已預先安裝 python
和 pip
工具。您可以設定 Cloud Build 使用這些工具來安裝依附元件、建構及執行單元測試。
事前準備
本頁的操作說明假設您熟悉 Python。此外:
-
Enable the Cloud Build, Cloud Run, Cloud Storage and Artifact Registry APIs.
- 如要在本頁面執行
gcloud
指令,請安裝 Google Cloud CLI。 - 準備好 Python 專案,包括
requirements.txt
檔案。您需要Dockerfile
和原始碼。 - 如要將建構的容器儲存在 Artifact Registry 中,請在 Artifact Registry 中建立 Docker 存放區。
- 如要在 Cloud Storage 中儲存測試記錄,請在 Cloud Storage 中建立值區。
必要 IAM 權限
如要在 Cloud Logging 中儲存測試記錄,請將 Cloud Storage bucket 的「Storage 物件建立者 (
roles/storage.objectCreator
)」角色授予建構服務帳戶。如要在 Artifact Registry 中儲存建構的映像檔,請將Artifact Registry 寫入者 (
roles/artifactregistry.writer
) 角色授予建構服務帳戶。
如需授予這些角色的操作說明,請參閱「使用 IAM 頁面授予角色」。
設定 Python 建構作業
本節將逐步說明 Python 應用程式的建構設定檔範例。這個檔案包含安裝必要條件、新增單元測試的建構步驟,以及在測試通過後建構及部署應用程式的步驟。
在專案根目錄中,建立名為
cloudbuild.yaml
的 Cloud Build 設定檔。安裝必要條件:Docker Hub 的
python
映像檔已預先安裝pip
。如要從pip
安裝依附元件,請新增建構步驟,並填入下列欄位:name
:將這個欄位的值設為python
,即可使用 Docker Hub 的 Python 映像檔執行這項工作。entrypoint
:設定這個欄位會覆寫name
中參照的預設映像檔進入點。將這個欄位的值設為pip
,即可將pip
叫用為建構步驟的進入點,並執行pip
指令。args
:建構步驟的args
欄位會取得引數清單,並將其傳送至name
欄位參照的映像檔。在這個欄位中傳遞引數,即可執行pip install
指令。pip install
指令中的--user
標記可確保後續的建構步驟能存取這個建構步驟中安裝的模組。
下列建構步驟會新增引數,從
requirements.txt
檔案安裝必要條件:新增單元測試:如果您已使用
pytest
等測試架構在應用程式中定義單元測試,可以透過在建構步驟中新增下列欄位,設定 Cloud Build 執行測試:name
:將這個欄位的值設為python
,即可使用 Docker Hub 的 Python 映像檔執行工作。entrypoint
:將這個欄位的值設為python
,即可執行python
指令。args
:新增執行python pytest
指令的引數。
下列建構步驟會將
pytest
記錄輸出內容儲存至 JUNIT XML 檔案。 這個檔案的名稱是使用與建構作業相關聯的修訂版本 ID 簡短版本建構而成。 後續的建構步驟會將這個檔案中的記錄檔儲存至 Cloud Storage。將應用程式容器化:新增建構步驟,確保測試通過後,即可建構應用程式。Cloud Build 提供預先建構的 Docker 映像檔,可用於將 Python 應用程式容器化。如要將應用程式容器化,請在建構步驟中新增下列欄位:
name
:將這個欄位的值設為gcr.io/cloud-builders/docker
,即可使用預先建構的 Docker 映像檔執行工作。args
:將docker build
指令的引數新增為這個欄位的值。
下列建構步驟會建構
myimage
映像檔,並以提交 ID 的簡短版本標記該映像檔。建構步驟會使用專案 ID、存放區名稱和簡短 SHA 值的預設替代值,因此這些值會在建構時自動替代。將容器推送至 Artifact Registry:您可以將建構的容器儲存在 Artifact Registry 中,這項 Google Cloud 服務可用來儲存、管理及保護建構構件。如要執行這項操作,您必須在 Artifact Registry 中建立現有的 Docker 存放區。如要設定 Cloud Build 將映像檔儲存在 Artifact Registry Docker 存放區中,請新增具有下列欄位的建構步驟:
name
:將這個欄位的值設為gcr.io/cloud-builders/docker
,即可為工作使用官方docker
建構工具映像檔。args
:將docker push
指令的引數新增為這個欄位的值。在目的地網址中,輸入要儲存映像檔的 Artifact Registry Docker 存放區。
下列建構步驟會將上一步建構的映像檔推送至 Artifact Registry:
選用:如要讓 Cloud Build 產生軟體構件供應鏈級別 (SLSA) 建構出處資訊,請完成下列步驟:
- 在建構步驟中使用
images
欄位,而不是使用個別的Docker push
建構步驟。 - 在建構設定檔的
options
區段中新增requestedVerifyOption: VERIFIED
。
將容器部署至 Cloud Run:如要在 Cloud Run 上部署映像檔,請新增具有下列欄位的建構步驟:
name
:將這個欄位的值設為google/cloud-sdk
,即可使用 gcloud CLI 映像檔叫用gcloud
指令,在 Cloud Run 上部署映像檔。args
:將gcloud run deploy
指令的引數新增為這個欄位的值。
下列建構步驟會將先前建構的映像檔部署至 Cloud Run:
將測試記錄儲存至 Cloud Storage:您可以指定現有值區位置和測試記錄路徑,設定 Cloud Build 將所有測試記錄儲存至 Cloud Storage。下列建構步驟會將您儲存在 JUNIT XML 檔案中的測試記錄,儲存至 Cloud Storage bucket:
以下程式碼片段顯示上述所有步驟的完整建構設定檔:
-
建構完成後,您可以在 Artifact Registry 中查看存放區詳細資料。
您也可以查看建構來源資訊中繼資料,以及驗證來源資訊。
後續步驟
- 瞭解如何查看建構結果。
- 瞭解如何保護建構作業。
- 瞭解如何建構獨立的 Python 應用程式。
- 瞭解如何使用私人依附元件。
- 瞭解如何排解建構錯誤。