Skip to content

关于Pipeline参数定义与构建时合并逻辑 #1

@ZedkingOwO

Description

@ZedkingOwO

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions