-
Notifications
You must be signed in to change notification settings - Fork 7
Description
laoyu
在分析 mflow 的runPipeline核心流程时,发现一个潜在的参数合并逻辑缺失问题:当前参数合并过程未将 Pipeline 定义时的全局参数(即Pipeline.Spec.With或Stage.With)纳入合并范围。具体表现为:
从代码实现来看,当创建PipelineTask时,虽然会将Pipeline定义和RunPipelineRequest参数封装到PipelineTask中,但在实际参数合并阶段(如LoadPipelineRunParam等关键方法),仅处理了RunPipelineRequest.RunParams(运行时传入的动态参数),而未对Pipeline定义时声明的with全局参数(用于传递给所有 Stage/Task 的默认参数)进行合并。这意味着,若在 Pipeline 定义时通过with字段配置了全局参数(例如设置通用的环境变量或默认值),这些参数将无法传递到具体的任务执行环节中,导致定义时的全局参数实际失效。
这一现象引发疑问:当前设计是否刻意忽略了Pipeline.With参数的合并逻辑?若并非如此,那么Pipeline.With作为定义时的全局参数,其设计初衷应是为任务提供默认参数,此时未合并的逻辑可能存在功能缺失;没想明白为什么没有合并Pipeline.With或者Stage.With
相关代码:
params := job.NewRunParamSet()
params.Add(ins.SystemRunParam()...)
params.Add(j.Spec.RunParams.Params...)
params.Merge(in.RunParams.Params...)
err = i.LoadPipelineRunParam(ctx, in, params)