You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cloud Workflows中校验Cloud Run Job的执行成功状态?

Cloud Workflows中校验Cloud Run Job执行成功的正确条件写法

问题场景

需要通过Cloud Workflows按顺序执行多个Cloud Run Job,要求在Job #1执行完成后校验其是否成功,再继续执行Job #2。Job #1执行完成后返回的状态JSON如下:

"status": {
  "completionTime": "2024-11-08T17:09:23.947071Z",
  "conditions": [
    {
      "lastTransitionTime": "2024-11-08T17:09:23.947071Z",
      "status": "True",
      "type": "Completed"
    },
    {
      "lastTransitionTime": "2024-11-08T17:08:32.322671Z",
      "status": "True",
      "type": "ResourcesAvailable"
    },
    {
      "lastTransitionTime": "2024-11-08T17:08:35.183828Z",
      "status": "True",
      "type": "Started"
    },
    {
      "lastTransitionTime": "2024-11-08T17:08:32.219908Z",
      "status": "True",
      "type": "ContainerReady"
    }
  ]
}

原尝试的条件校验代码无法生效:

- check_step1:
    switch:
      - condition: ${step1_result.status.conditions.type == "Completed"}
        next: step2

错误原因

原写法的问题在于:conditions是数组类型,直接通过.type访问数组的属性无效,Cloud Workflows使用的CEL表达式语言无法直接从数组中提取单个属性值,必须遍历数组找到目标条件项。

正确的校验条件写法

使用CEL的exists函数遍历conditions数组,检查是否存在type为Completed且status为True的条件项(这代表Job执行成功完成):

- check_step1:
    switch:
      - condition: ${exists(step1_result.status.conditions, c, c.type == "Completed" && c.status == "True")}
        next: step2
      # 可选:添加失败分支处理
      - condition: ${default}
        next: job1_failure_handler

补充说明

  • exists(array, element_var, condition):CEL内置函数,用于判断数组中是否存在满足指定条件的元素
  • 必须同时校验type == "Completed"和status == "True":只有两个条件同时满足,才能确认Cloud Run Job已成功执行完成

内容的提问来源于stack exchange,提问作者TheGeographer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:25:03