建立基本建構設定檔

本頁說明如何建立建構設定檔,以用於在 Cloud Build 中啟動建構。

建構設定檔定義 Cloud Build 執行工作所需的欄位。如果您使用 gcloud 指令列工具建構觸發條件,就需要建構設定檔。您可以使用 YAML 或 JSON 語法撰寫建構設定檔。

事前準備

建立建構設定

下列步驟說明如何建立簡單的建構設定檔。設定檔中的每個欄位都定義了您要執行的一部分工作。建構設定檔中唯一的必填欄位是步驟的 name 欄位;其他所有欄位都是選填欄位。

YAML

  1. 建立建構設定檔。在專案根目錄中,建立名為 cloudbuild.yaml 的檔案。這是您的 Cloud Build 建構設定檔。

  2. 新增步驟欄位。建構設定檔中的 steps 區段包含您想讓 Cloud Build 執行的建構步驟。

    steps:
    
  3. 新增第一個步驟。在 steps: 下,新增 name 欄位,並將其指向要執行工作的容器映像檔。Cloud Build 及其開發人員社群提供多個安裝了常見語言與工具的容器映像檔。您可以在建構步驟中使用任何映像檔 (也稱為雲端建構工具),或任何開放給大眾使用的映像檔。如要瞭解您可以在建構步驟中使用的不同類型的容器映像檔,請參閱雲端建構工具

    下列程式碼片段示範使用 docker 建構工具 gcr.io/cloud-builders/docker 的建構步驟,這個建構工具是執行 Docker 的容器映像檔。

    steps:
    - name: 'gcr.io/cloud-builders/docker'
    
  4. 新增步驟引數。步驟的 args 欄位會取得引數清單並將其傳送至 name 欄位參照的建構工具。

    下列範例會使用引數呼叫 docker build 指令,並將其傳送至 docker 建構工具。引數包括:

    • 指令名稱 (build)
    • Docker 標記 (t)
    • 要建構的映像檔名稱 (gcr.io/my-project/my-image)
    • 原始碼的位置 (.,表示原始碼位於目前工作目錄中)。

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      
  5. 包含步驟的其他任何欄位。您可以將更多欄位 (例如環境變數與工作目錄) 新增至建構步驟,來設定建構步驟。如需可在建構步驟中包含的所有欄位說明,請參閱建構步驟

    下列範例中包含了 timeout 欄位,指定 docker 步驟必須在 500 秒後逾時。

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    
  6. 新增更多步驟。您可以包含其他 name 欄位,並將其指向雲端建構工具,以新增任意數量的建構步驟至建構設定檔。

    下列程式碼片段在建構設定檔中加入了另外兩個步驟:

    • docker 建構步驟,該步驟叫用 docker push 指令,並將上一步建構的映像檔推送到 Container Registry
    • kubectl 建構步驟,該步驟叫用 kubectl set image 指令,將映像檔部署至 Kubernetes Engine 叢集。這個步驟中包含了 env 欄位,指定 Compute Engine 區域和 Kubernetes Engine 叢集。

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      
  7. 包含其他建構設定。您可以加入 machineTypetags 等欄位,進一步設定建構作業。如需可在建構設定檔中包含的完整欄位清單,請參閱建構設定總覽

    以下範例為建構新增了下列欄位:

    • machineType,指定執行建構的虛擬機器大小。
    • timeout,指定建構在多久時間之後逾時。
    • tags,用於為建構加註。

      steps:
      - name: 'gcr.io/cloud-builders/docker'
        args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
        timeout: 500s
      - name: 'gcr.io/cloud-builders/docker'
        args: ['push', 'gcr.io/my-project/my-image']
      - name: 'gcr.io/cloud-builders/kubectl'
        args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
        env:
        - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
        - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
      options:
          machineType: 'N1_HIGHCPU_8'
      timeout: 660s
      tags: ['mytag1', 'mytag2']
      
  8. 儲存建構的映像檔與成果。如果建構產生任何容器映像檔,您可以選擇將其儲存在 Container Registry 中。您可以使用 images 欄位進行這項操作。

    下列範例會將在 docker 步驟中建構的映像檔儲存至 Container Registry:

    steps:
    - name: 'gcr.io/cloud-builders/docker'
      args: ['build', '-t', 'gcr.io/my-project/my-image', '.']
      timeout: 500s
    - name: 'gcr.io/cloud-builders/docker'
      args: ['push', 'gcr.io/my-project/my-image']
    - name: 'gcr.io/cloud-builders/kubectl'
      args: ['set', 'image', 'deployment/my-deployment', 'my-container=gcr.io/my-project/my-image']
      env:
      - 'CLOUDSDK_COMPUTE_ZONE=us-east4-b'
      - 'CLOUDSDK_CONTAINER_CLUSTER=my-cluster'
    options:
        machineType: 'N1_HIGHCPU_8'
    timeout: 660s
    tags: ['mytag1', 'mytag2']
    images: ['gcr.io/my-project/myimage']
    

    如果建構產生任何非容器成果,您可以使用 artifacts 欄位將其儲存在 Cloud Storage 中。如需執行這項操作的操作說明,請參閱儲存映像檔與成果

JSON

  1. 建立建構設定檔。在專案根目錄中,建立名為 cloudbuild.json 的檔案。這是您的 Cloud Build 建構設定檔。

  2. 新增步驟欄位。設定檔中的 steps 區段包含您想讓 Cloud Build 執行的建構步驟。

    {
        "steps:" [
        {
        }
        ]
    }
    
  3. 新增第一個步驟。在「步驟:」下,新增名稱欄位,並將其指向要執行工作的容器映像檔。Cloud Build 及其開發人員社群提供多個安裝了常見工具與語言的容器映像檔。您可以在建構步驟中使用任何映像檔 (也稱為雲端建構工具),或任何開放給大眾使用的映像檔。如要瞭解您可以在建構步驟中使用的不同類型的容器映像檔,請參閱雲端建構工具

    下列程式碼片段示範使用 docker 建構工具 gcr.io/cloud-builders/docker 的建構步驟,這個建構工具是執行 Docker 的容器映像檔。

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker"
        }
        ]
    }
    
  4. 新增步驟引數。步驟的 args 欄位會取得引數清單並將其傳送至 name 欄位參照的建構工具。

    下列範例會使用引數呼叫 docker 建構指令,並將其傳送至 docker 建構工具。引數包括:

    • 指令名稱 (build)
    • Docker 標記 (t)
    • 要建構的映像檔名稱 (gcr.io/my-project/my-image)
    • 原始碼的位置 (.,表示原始碼位於目前工作目錄中)。

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ]
          }
          ]
      }
      
  5. 包含步驟的其他任何欄位。您可以將更多欄位 (例如環境變數與工作目錄) 新增至建構步驟,來設定建構步驟。如需可在建構步驟中包含的所有欄位說明,請參閱建構步驟

    下列範例中包含了 timeout 欄位,指定 docker 步驟必須在 500 秒後逾時。

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        }
        ]
    }
    
  6. 新增更多步驟。您可以包含其他名稱欄位,並將其指向雲端建構工具,來新增任意數量的建構步驟至建構設定檔。

    下列程式碼片段在建構設定檔中加入了另外兩個步驟:

    • docker 建構步驟,該步驟叫用 docker push 指令,並將上一步建構的映像檔推送到 Container Registry
    • kubectl 建構步驟,該步驟叫用 kubectl set image 指令,將映像檔部署至 Kubernetes Engine 叢集。這個步驟中包含了 env 欄位,指定 Compute Engine 區域和 Kubernetes Engine 叢集。

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ]
      }
      
  7. 包含其他建構設定。您可以加入 machineTypetags 等欄位,進一步設定建構作業。如需可在建構設定檔中包含的完整欄位清單,請參閱建構設定總覽

    以下範例為建構新增了下列欄位:

    • machineType,指定執行建構的虛擬機器大小。
    • timeout,指定建構在多久時間之後逾時。
    • tags,用於為建構加註。

      {
          "steps": [
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "build",
                  "-t",
                  "gcr.io/my-project/my-image",
                  "."
              ],
              "timeout": "500s"
          },
          {
              "name": "gcr.io/cloud-builders/docker",
              "args": [
                  "push",
                  "gcr.io/my-project/my-image",
              ],
          },
          {
              "name": "gcr.io/cloud-builders/kubectl",
              "args": [
                  "set",
                  "image",
                  "deployment/my-deployment",
                  "my-container=gcr.io/my-project/my-image"
              ],
              "env": [
                  "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                  "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
              ]
          }
          ],
          "options": {
              "machineType": "N1_HIGHCPU_8"
          },
          "timeout": "660s",
          "tags": [
              "mytag1",
              "mytag2"
          ]
      }
      
  8. 儲存建構的映像檔與成果。如果建構產生任何容器映像檔,您可以選擇將其儲存在 Container Registry 中。您可以使用 images 欄位進行這項操作。

    下列範例會將在 docker 步驟中建構的映像檔儲存至 Container Registry:

    {
        "steps": [
        {
            "name": "gcr.io/cloud-builders/docker",
            "args": [
                "build",
                "-t",
                "gcr.io/my-project/my-image",
                "."
            ],
            "timeout": "500s"
        },
        {
                "name": "gcr.io/cloud-builders/docker",
                "args": [
                    "push",
                    "gcr.io/my-project/my-image",
                ],
        },
        {
            "name": "gcr.io/cloud-builders/kubectl",
            "args": [
                "set",
                "image",
                "deployment/my-deployment",
                "my-container=gcr.io/my-project/my-image"
            ],
            "env": [
                "CLOUDSDK_COMPUTE_ZONE=us-east4-b",
                "CLOUDSDK_CONTAINER_CLUSTER=my-cluster"
            ]
        }
        ],
        "options": {
            "machineType": "N1_HIGHCPU_8"
        },
        "timeout": "660s",
        "tags": [
            "mytag1",
            "mytag2"
        ],
        "images": [
            "gcr.io/my-project/myimage"
        ]
    }
    

    如果建構產生任何非容器成果,您可以使用 artifacts 欄位將其儲存在 Cloud Storage 中。如需執行這項操作的操作說明,請參閱儲存映像檔與成果

後續步驟

傳送您對下列選項的寶貴意見...

這個網頁
Cloud Build