本文說明如何在 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 目標 (類型為 GKE 和 ANTHOS 的目標): |
|
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目標的特定執行階段類型。
GKE、ANTHOS或RUN。 如果是自訂目標,則不會設定這項屬性。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推出作業中的階段,包含部署掛鉤、驗證工作或自訂轉譯/部署的工作。