如何在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
相关产品推荐
相关产品推荐

