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