設定工作

本文說明如何在 Cloud Deploy 中設定工作。工作是工作單元,可用於部署掛鉤部署驗證部署分析,或自訂目標類型中的自訂算繪或部署。

您可以在放送管道上設定工作 (做為策略的一部分),或設定自訂目標類型的算繪或部署作業。

您可以在工作設定中將系統參數範本化,藉此使用這些參數。

定義工作

您可以在交付管道設定中定義工作,也可以將工作定義為自訂目標類型定義的一部分。以下 YAML 顯示任一情況使用的 task 節:

  task:
    type: container
    image: IMAGE
    command: [COMMANDS_TO_RUN]
    args: [LIST_OF_ARGS]
    env:
    - KEY1:VAL1
    - KEY2:VAL2
    ...

如要設定 task

  • type

    指定要設定的工作類型。系統僅支援 container

  • image

    這是容器映像檔的路徑。

  • command

    是要在容器上執行的指令。

  • args

    command 的引數集合。

  • env

    是要提供給執行中容器的環境變數集合。

將系統參數設為工作環境變數

Cloud Deploy 提供系統產生的參數,您可以在工作中使用這些參數做為環境變數,方法是在 container 工作中使用 env 欄位。範本化參數可出現在 env 對應項目的鍵或值欄位中。

以下列舉幾個應用實例:

  • 以環境變數形式傳遞 Cloud Run 服務名稱、服務網址和修訂版本名稱。

    task:
      type: container
      image: my-image
      command: ["/bin/bash"]
      env:
      - RUN_SERVICE_NAME : "${{ render.metadata.cloud_run.service.name }}"
      - RUN_SERVICE_URL: "${{ rollout.metadata.cloud_run.service_url }}"
      - RUN_REVISION_NAME: "${{ render.metadata.cloud_run.revision.name }}"
    
  • 在單一項目中使用多個參數。

    task:
      type: container
      image: my-image
      command: ["/bin/bash"]
      env:
      - DEPLOY_PARAMS_KEY : "${{ deploy_params['FOO'] }}-with-${{ deploy_params['BAR'] }}"
      - "${{ project.id }}_${{ location }}" : "${{ target.id }}"
    

可用的系統參數

Cloud Deploy 提供下列系統參數,您可以使用此格式在工作設定中使用:

${{ parameter }}

$${{ }}

以下列出可用的範本參數:

名稱 定義
location 包含 Cloud Deploy 資源的區域。
建立發布版本時可使用。
project.num 包含 Cloud Deploy 資源的專案 Google Cloud 專案編號。
建立發布版本時可使用。
project.id 專案的 Google Cloud 專案 ID。
建立發布版本時可使用。
delivery_pipeline.name 傳送管道的完整資源名稱。
建立發布版本時可使用。
delivery_pipeline.id 推送管道的 ID。
建立發布版本時可使用。
target.name 目標的完整資源名稱。
建立發布版本時可使用。
target.id 目標的 ID。
建立發布版本時可使用。
release.name 版本的完整資源名稱。
建立發布版本時可使用。
release.id 發行內容的 ID。
建立發布版本時可使用。
rollout.name 推出作業的完整資源名稱。
建立推出作業時可以使用。
rollout.id 推出作業的 ID。
建立推出作業時可以使用。
job.id 正在執行的工作 ID。
建立推出作業時可以使用。
phase.id 推出作業的階段,其中包含工作的工作。
建立推出作業時可以使用。
job_run.name 工作執行的完整資源名稱,代表目前的工作執行作業。
建立推出作業時可以使用。
job_run.id 代表目前工作執行的工作執行 ID。
建立推出作業時可以使用。
deploy_params 與目標相關聯的部署參數地圖。
範例:deploy_params['KEY']
嘗試存取不存在的鍵會產生空字串。
建立發布版本時可使用。
針對 RUN 類型的目標:
cloud_run.project 建立 Cloud Run 服務的專案。
建立發布版本時可使用。
cloud_run.location 部署 Cloud Run 服務的區域。
建立發布版本時可使用。
render.metadata.cloud_run.service.name 已部署的 Cloud Run 服務名稱。
轉譯作業完成後即可使用。
render.metadata.cloud_run.service.id 已部署的 Cloud Run 服務 ID。
轉譯作業完成後即可使用。
rollout.metadata.cloud_run.service.url 使用者存取服務時使用的網址。您可以在 Google Cloud 控制台中,查看服務的 Cloud Run 服務詳細資料。
部署作業完成後即可使用。
render.metadata.cloud_run.revision.name 要部署的 Cloud Run 服務修訂版本完整名稱。
轉譯作業完成後即可使用。
render.metadata.cloud_run.revision.id 要部署的 Cloud Run 服務修訂版本 ID。
轉譯作業完成後即可使用。
rollout.metadata.cloud_run.previous_revision.name 要部署的 Cloud Run 服務先前修訂版本的完整名稱。
部署作業完成後即可使用。
rollout.metadata.cloud_run.previous_revision.id 要部署的 Cloud Run 服務先前修訂版本 ID。
部署作業完成後即可使用。
針對 GKE 類型的目標:
gke.cluster.name GKE 叢集的完整資源名稱。
建立發布版本時可使用。
gke.cluster.id GKE 叢集的 ID。
建立發布版本時可使用。
gke.cluster.project GKE 叢集的專案 ID/編號。
建立發布版本時可使用。
gke.cluster.location GKE 叢集的位置。
建立發布版本時可使用。
針對 ANTHOS 類型的目標:
anthos.membership.project GKE Enterprise 叢集的專案 ID/編號。
建立發布版本時可使用。
anthos.membership.location GKE Enterprise 叢集的位置。
建立發布版本時可使用。
anthos.membership.name GKE Enterprise 成員的完整資源名稱。
建立發布版本時可使用。
anthos.membership.id GKE Enterprise 成員 ID。
建立發布版本時可使用。
如果是 Kubernetes 目標 (類型為 GKEANTHOS 的目標):
render.metadata.kubernetes.deployment 要更新的部署作業名稱。如果資訊清單中有多個部署作業,則不會設定這項屬性。
轉譯作業完成後即可使用。
render.metadata.kubernetes.canary_deployment 自動化初期測試中的初期測試部署作業名稱。在穩定階段,這與 render.metadata.kubernetes.deployment 相同,因為穩定階段沒有 Canary。至於其他階段,這與 render.metadata.kubernetes.deployment 相同,只是結尾加上 -canary
轉譯作業完成後即可使用。
render.metadata.kubernetes.namespace 要部署資源的命名空間。如果資訊清單中有多個命名空間,則不會設定這個值。
轉譯作業完成後即可使用。
針對 CUSTOM_TARGET_TYPE 類型的目標:
render.metadata.custom 自訂算繪的算繪中繼資料對應。
範例:render.metadata.custom['KEY']
嘗試存取不存在的鍵會導致空字串。
轉譯作業完成後即可使用。
rollout.metadata.custom 自訂部署的推出中繼資料地圖。
範例:rollout.metadata.custom['KEY']
嘗試存取不存在的鍵會導致空字串。
部署作業完成後即可使用。

可用的環境變數

Cloud Deploy 也會在執行環境中提供及填入下列環境變數。 您可以在部署掛鉤驗證工作自訂目標的算繪或部署作業中使用這些環境變數。

  • ANTHOS_MEMBERSHIP

    如果是 ANTHOS 類型的目標,則為 Anthos 成員資格的完整資源名稱。

  • CLOUD_RUN_LOCATION

    如果是 RUN 類型的目標,則為 Cloud Run 服務的部署區域。

  • CLOUD_RUN_PROJECT

    如果是 RUN 類型的目標,則為建立 Cloud Run 服務的專案。

  • CLOUD_RUN_SERVICE

    如果是 RUN 類型的目標,則為已部署的 Cloud Run 服務名稱。

  • CLOUD_RUN_SERVICE_URLS

    如果是 RUN 類型的目標,這是使用者用來存取服務的網址 (或以半形逗號分隔的網址清單)。您可以在Google Cloud 控制台中,查看服務的 Cloud Run 服務詳細資料。成功部署 Cloud Run 服務後,Cloud Run 會產生網址。因此,這個環境變數僅適用於部署後掛鉤和驗證工作

  • CLOUD_RUN_REVISION

    如果是 RUN 類型的目標,則為 Cloud Run 服務的特定修訂版本。

  • GKE_CLUSTER

    如果是 GKE 類型的目標,請提供 Google Kubernetes Engine 叢集的完整資源名稱,例如 projects/p/locations/us-central1/clusters/dev

  • TARGET_TYPE

    目標的特定執行階段類型。GKEANTHOSRUN。 如果是自訂目標,則不會設定這項屬性。

  • CLOUD_DEPLOY_LOCATION

    包含 Cloud Deploy 資源的區域。

  • CLOUD_DEPLOY_DELIVERY_PIPELINE

    推送管道的 ID。

  • CLOUD_DEPLOY_TARGET

    目標的 ID。

  • CLOUD_DEPLOY_PROJECT

    包含 Cloud Deploy 資源的專案專案編號。 Google Cloud

  • CLOUD_DEPLOY_PROJECT_ID

    專案的 Google Cloud 專案 ID。

  • CLOUD_DEPLOY_RELEASE

    要執行 Hook 的發布版本 ID。

  • CLOUD_DEPLOY_ROLLOUT

    包含掛鉤作業的推出作業 ID。

  • CLOUD_DEPLOY_JOB_RUN

    工作執行的 ID,代表目前執行的工作。

  • CLOUD_DEPLOY_PHASE

    推出作業中的階段,包含部署掛鉤、驗證工作或自訂轉譯/部署的工作。

後續步驟