本頁說明如何建立建構設定檔,以用於在 Cloud Build 中啟動建構。
建構設定檔定義 Cloud Build 執行工作所需的欄位。如果您要使用 gcloud
指令列工具或建構觸發條件啟動建構作業,就需要建構設定檔。您可以使用 YAML 或 JSON 語法撰寫建構設定檔。
事前準備
請參閱建構設定總覽,瞭解可在建構設定檔中加入的欄位。
建立建構設定
下列步驟說明如何建立基本的建構設定檔。建構設定檔中的每個欄位都定義您要執行的一部分工作。建構設定檔中唯一的必填欄位是步驟的 name
欄位。所有其他欄位均為選填欄位。
YAML
建立建構設定檔。在專案根目錄中,建立名為
cloudbuild.yaml
的檔案。這是您的 Cloud Build 設定檔。新增步驟欄位。建構設定檔中的
steps
區段包含您想讓 Cloud Build 執行的建構步驟。steps:
新增第一個步驟。在
steps:
下,新增name
欄位,並將其指向要執行工作的容器映像檔。Cloud Build 及其開發人員社群提供多個安裝了常見工具與語言的容器映像檔。您可以在建構步驟中使用任何映像檔 (也稱為雲端建構工具),或任何開放給大眾使用的映像檔。如要瞭解您可以在建構步驟中使用的不同類型的容器映像檔,請參閱雲端建構工具。下列程式碼片段示範使用
docker
建構工具gcr.io/cloud-builders/docker
的建構步驟,這個建構工具是執行 Docker 的容器映像檔。steps: - name: 'gcr.io/cloud-builders/docker'
新增步驟引數。步驟的
args
欄位會取得引數清單,並將其傳送至name
欄位參照的建構工具。如果name
欄位中的建構工具有進入點,系統會使用清單中的args
存取該進入點。如果name
欄位中的建構工具沒有進入點,系統會將args
中的第一個元素做為進入點。在下列範例中:
build
是 Docker 雲端建構工具的進入點。-t
是 Docker 標記。us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image
是指要建構的 Artifact Registry 映像檔名稱。建構步驟會使用專案 ID 的預設替換值,因此這個值會在建構期間自動替換。.
是原始碼的位置,表示原始碼位於目前工作目錄中。steps: - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image', '.']
新增更多步驟。您可以包含其他
name
欄位,並將其指向雲端建構工具,來新增任意數量的建構步驟至建構設定檔。下列程式碼片段在建構設定檔中加入了另外兩個步驟:
- docker 建構步驟,該步驟叫用
docker push
指令,並將上一步建構的映像檔推送至 Artifact Registry。 Google Cloud SDK 指令的建構步驟,其中指定
gcloud
進入點,可從 Artifact Registry 中的容器映像檔建立 Compute Engine 例項。這個步驟中包含了env
欄位,指定 Compute Engine 區域和區域。- name: 'gcr.io/cloud-builders/docker' args: ['push', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image'] - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'gcloud' args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image'] env: - 'CLOUDSDK_COMPUTE_REGION=us-central1' - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
- docker 建構步驟,該步驟叫用
包含其他建構設定欄位。您可以加入
machineType
、tags
或timeout
等欄位,進一步設定版本。如需可在建構設定檔中包含的完整欄位清單,請參閱建構設定總覽。在以下範例中,
gcr.io/google.com/cloudsdktool/cloud-sdk
建構步驟會在 240 秒後逾時。- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'gcloud' timeout: 240s args: ['compute', 'instances', 'create-with-container', 'my-vm-name', '--container-image', 'us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image'] env: - 'CLOUDSDK_COMPUTE_REGION=us-central1' - 'CLOUDSDK_COMPUTE_ZONE=us-central1-a'
請參閱以下程式碼片段,瞭解基本建構設定檔的完整範例:
在這個範例中,容器映像檔會儲存在 Artifact Registry 中。如果建構產生任何非容器成果,您可以使用
artifacts
欄位將其儲存在 Cloud Storage 中。如需相關操作說明,請參閱「儲存映像檔與成果」。
JSON
建立建構設定檔。在專案根目錄中,建立名為
cloudbuild.json
的檔案。這是您的 Cloud Build 設定檔。新增步驟欄位。建構設定檔中的
steps
區段包含您想讓 Cloud Build 執行的建構步驟。{ "steps": }
新增第一個步驟。在
steps:
下,新增name
欄位,並將其指向要執行工作的容器映像檔。Cloud Build 及其開發人員社群提供多個安裝了常見工具與語言的容器映像檔。您可以在建構步驟中使用任何映像檔 (也稱為雲端建構工具),或任何開放給大眾使用的映像檔。如要瞭解您可以在建構步驟中使用的不同類型的容器映像檔,請參閱雲端建構工具。下列程式碼片段示範使用
docker
建構工具gcr.io/cloud-builders/docker
的建構步驟,這個建構工具是執行 Docker 的容器映像檔。{ "steps": [ { "name": "gcr.io/cloud-builders/docker" } ] }
新增步驟引數。步驟的
args
欄位會取得引數清單,並將其傳送至name
欄位參照的建構工具。如果name
欄位中的建構工具有進入點,系統會使用清單中的args
存取該進入點。如果name
欄位中的建構工具沒有進入點,系統會將args
中的第一個元素做為進入點。在下列範例中:
build
是 Docker 雲端建構工具的進入點。-t
是 Docker 標記。us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/my-image
是指要建構的 Artifact Registry 映像檔名稱。建構步驟會使用專案 ID 的預設替換值,因此這個值會在建構期間自動替換。.
是原始碼的位置,表示原始碼位於目前工作目錄中。{ "steps": [ { "name": "gcr.io/cloud-builders/docker", "args": [ "build", "-t", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage", "." ] } ] }
新增更多步驟。您可以包含其他
name
欄位,並將其指向雲端建構工具,來新增任意數量的建構步驟至建構設定檔。下列程式碼片段在建構設定檔中加入了另外兩個步驟:
- docker 建構步驟,該步驟叫用
docker push
指令,並將上一步建構的映像檔推送至 Artifact Registry。 Google Cloud SDK 指令的建構步驟,其中指定
gcloud
進入點,可從 Artifact Registry 中的容器映像檔建立 Compute Engine 例項。這個步驟中包含了env
欄位,指定 Compute Engine 區域和區域。{ "name": "gcr.io/cloud-builders/docker", "args": [ "push", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage" ] }, { "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "gcloud", "args": [ "compute", "instances", "create-with-container", "my-vm-name", "--container-image", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage" ], "env": [ "CLOUDSDK_COMPUTE_REGION=us-central1", "CLOUDSDK_COMPUTE_ZONE=us-central1-a" ] }
- docker 建構步驟,該步驟叫用
包含其他建構設定欄位。您可以加入
machineType
、tags
或timeout
等欄位,進一步設定版本。如需可在建構設定檔中包含的完整欄位清單,請參閱建構設定總覽。在以下範例中,
gcr.io/google.com/cloudsdktool/cloud-sdk
建構步驟會在 240 秒後逾時。{ "name": "gcr.io/google.com/cloudsdktool/cloud-sdk", "entrypoint": "gcloud", "timeout": "240s", "args": [ "compute", "instances", "create-with-container", "my-vm-name", "--container-image", "us-central1-docker.pkg.dev/${PROJECT_ID}/my-docker-repo/myimage" ], "env": [ "CLOUDSDK_COMPUTE_REGION=us-central1", "CLOUDSDK_COMPUTE_ZONE=us-central1-a" ] }
請參閱以下程式碼片段,瞭解基本建構設定檔的完整範例:
在這個範例中,容器映像檔會儲存在 Artifact Registry 中。如果建構產生任何非容器成果,您可以使用
artifacts
欄位將其儲存在 Cloud Storage 中。如需相關操作說明,請參閱「儲存映像檔與成果」。
後續步驟
- 瞭解如何手動及使用建構設定檔,利用觸發條件執行建構作業。
- 瞭解如何撰寫建構設定,以包含依附元件,及建構、測試和部署成果。