配置任务

本文档介绍了如何在 Cloud Deploy 中配置任务。任务是一种工作单元,可用作部署钩子,用于部署验证部署分析,或用于自定义目标类型中的自定义渲染或自定义部署。

您可以配置交付流水线上的任务(作为策略的一部分)或自定义目标类型的呈现或部署。

借助任务,您可以通过将系统参数纳入任务配置中来使用这些参数。

定义任务

您可以在交付流水线配置中定义任务,也可以将其定义为自定义目标类型定义的一部分。以下 YAML 显示了这两种情况下使用的 task stanza:

  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 自动化 Canary 版中的 Canary 部署的名称。对于稳定阶段,此值与 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 会生成这些网址。因此,此环境变量仅在 postdeploy 钩子和验证作业中可用。

  • 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

    钩子将运行的版本对应的 ID。

  • CLOUD_DEPLOY_ROLLOUT

    包含钩子作业的发布版本的 ID。

  • CLOUD_DEPLOY_JOB_RUN

    表示当前作业执行的作业运行的 ID。

  • CLOUD_DEPLOY_PHASE

    发布中包含部署钩子、验证作业或自定义渲染/部署的阶段

后续步骤