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

Spinnaker重启Jenkins阶段后StageEnabled未重新计算问题咨询

Spinnaker阶段重启后Manual Judgment执行不符合预期的问题分析

结论

这不是正常行为,属于Spinnaker默认阶段启用逻辑的局限性导致的问题。

问题原因

Spinnaker的stageEnabled表达式默认仅在阶段第一次进入前置检查时计算一次,不会随着依赖阶段的状态更新(比如重启后成功)重新评估。当阶段2首次执行失败时,阶段3的stageEnabled已计算为true并标记为待执行;即使后续阶段2重启成功,阶段3的启用状态不会刷新,仍会按照最初的判定结果执行。

解决方案

方案1:修改表达式,获取阶段的最终执行状态

将阶段3的stageEnabled表达式改为直接取阶段2最后一次执行的状态,确保判断的是重启后的最新结果:

"stageEnabled": {
  "expression": "${ #execution.stages.?[name == 'Job1'][-1].status.toString() != 'SUCCEEDED' }",
  "type": "expression"
}

解释:

  • #execution.stages:获取当前流水线的所有阶段实例(包含重启后的阶段记录)
  • ?[name == 'Job1']:筛选出所有名为Job1的阶段
  • [-1]:取最后一次执行的阶段实例(即重启后的最新状态)
  • 最终判断该实例的状态是否不为SUCCEEDED

方案2:开启动态阶段评估特性(需管理员权限)

如果使用Spinnaker 1.28及以上版本,可以通过开启dynamicStageEvaluation让stageEnabled在阶段准备执行前重新计算:
在Orca服务的配置文件中添加:

orca:
  features:
    dynamicStageEvaluation: true

该配置会让所有阶段的stageEnabled表达式在每次准备执行前重新评估,确保依赖状态的实时性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 04:40:58