本文档介绍了如何在 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 目标(类型为 GKE 和 ANTHOS 的目标): |
|
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目标的特定运行时类型。
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钩子将运行的版本对应的 ID。
CLOUD_DEPLOY_ROLLOUT包含钩子作业的发布版本的 ID。
CLOUD_DEPLOY_JOB_RUN表示当前作业执行的作业运行的 ID。
CLOUD_DEPLOY_PHASE发布中包含部署钩子、验证作业或自定义渲染/部署的阶段。