配置任务

本文档介绍了如何在 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。
在创建发布版本时可用。