Skip to content

Commit

Permalink
Refactor extracting parameters from a PipelineTask
Browse files Browse the repository at this point in the history
This commit adds a PipelinTask method to extract all parameters and refactors validatePipelineContextVariablesInParamValues() using this method.
  • Loading branch information
EmmaMunley authored and tekton-robot committed Mar 13, 2023
1 parent 4844cc8 commit 45269ca
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 52 deletions.
3 changes: 1 addition & 2 deletions pkg/apis/pipeline/v1/param_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,7 @@ type Param struct {
Value ParamValue `json:"value"`
}

// extractParamValuesFromParams get all param values from params
func (ps Params) extractParamValuesFromParams() []string {
func (ps Params) extractParamValues() []string {
pvs := []string{}
for i := range ps {
pvs = append(pvs, ps[i].Value.StringVal)
Expand Down
17 changes: 17 additions & 0 deletions pkg/apis/pipeline/v1/pipeline_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,23 @@ func (pt *PipelineTask) IsMatrixed() bool {
return pt.Matrix != nil && (pt.Matrix.hasParams() || pt.Matrix.hasInclude())
}

// extractAllParams extracts all the parameters in a PipelineTask:
// - pt.Params
// - pt.Matrix.Params
// - pt.Matrix.Include.Params
func (pt *PipelineTask) extractAllParams() Params {
allParams := pt.Params
if pt.Matrix.hasParams() {
allParams = append(allParams, pt.Matrix.Params...)
}
if pt.Matrix.hasInclude() {
for _, include := range pt.Matrix.Include {
allParams = append(allParams, include.Params...)
}
}
return allParams
}

func (pt *PipelineTask) validateMatrix(ctx context.Context) (errs *apis.FieldError) {
if pt.IsMatrixed() {
// This is an alpha feature and will fail validation if it's used in a pipeline spec
Expand Down
29 changes: 5 additions & 24 deletions pkg/apis/pipeline/v1/pipeline_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,26 +183,7 @@ func validatePipelineContextVariables(tasks []PipelineTask) *apis.FieldError {
)
var paramValues []string
for _, task := range tasks {
var matrixParams []Param
var includeParams []Param
if task.IsMatrixed() {
matrixParams = task.Matrix.Params
if task.Matrix.hasInclude() {
for _, include := range task.Matrix.Include {
includeParams = include.Params
}
}
}
for _, param := range append(task.Params, matrixParams...) {
paramValues = append(paramValues, param.Value.StringVal)
paramValues = append(paramValues, param.Value.ArrayVal...)
}

if task.Matrix.hasInclude() {
for _, param := range append(task.Params, includeParams...) {
paramValues = append(paramValues, param.Value.StringVal)
}
}
paramValues = task.extractAllParams().extractParamValues()
}
errs := validatePipelineContextVariablesInParamValues(paramValues, "context\\.pipelineRun", pipelineRunContextNames).
Also(validatePipelineContextVariablesInParamValues(paramValues, "context\\.pipeline", pipelineContextNames)).
Expand Down Expand Up @@ -441,9 +422,9 @@ func (ps *PipelineSpec) ValidateParamArrayIndex(ctx context.Context, params Para

paramsRefs := []string{}
for i := range ps.Tasks {
paramsRefs = append(paramsRefs, ps.Tasks[i].Params.extractParamValuesFromParams()...)
paramsRefs = append(paramsRefs, ps.Tasks[i].Params.extractParamValues()...)
if ps.Tasks[i].IsMatrixed() {
paramsRefs = append(paramsRefs, ps.Tasks[i].Matrix.Params.extractParamValuesFromParams()...)
paramsRefs = append(paramsRefs, ps.Tasks[i].Matrix.Params.extractParamValues()...)
}
for j := range ps.Tasks[i].Workspaces {
paramsRefs = append(paramsRefs, ps.Tasks[i].Workspaces[j].SubPath)
Expand All @@ -455,9 +436,9 @@ func (ps *PipelineSpec) ValidateParamArrayIndex(ctx context.Context, params Para
}

for i := range ps.Finally {
paramsRefs = append(paramsRefs, ps.Finally[i].Params.extractParamValuesFromParams()...)
paramsRefs = append(paramsRefs, ps.Finally[i].Params.extractParamValues()...)
if ps.Finally[i].IsMatrixed() {
paramsRefs = append(paramsRefs, ps.Finally[i].Matrix.Params.extractParamValuesFromParams()...)
paramsRefs = append(paramsRefs, ps.Finally[i].Matrix.Params.extractParamValues()...)
}
for _, wes := range ps.Finally[i].When {
paramsRefs = append(paramsRefs, wes.Values...)
Expand Down
3 changes: 1 addition & 2 deletions pkg/apis/pipeline/v1beta1/param_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,7 @@ type Param struct {
// Params is a list of Param
type Params []Param

// extractParamValuesFromParams get all param values from params
func (ps Params) extractParamValuesFromParams() []string {
func (ps Params) extractParamValues() []string {
pvs := []string{}
for i := range ps {
pvs = append(pvs, ps[i].Value.StringVal)
Expand Down
17 changes: 17 additions & 0 deletions pkg/apis/pipeline/v1beta1/pipeline_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,23 @@ func (pt *PipelineTask) IsMatrixed() bool {
return pt.Matrix != nil && (pt.Matrix.hasParams() || pt.Matrix.hasInclude())
}

// extractAllParams extracts all the parameters in a PipelineTask:
// - pt.Params
// - pt.Matrix.Params
// - pt.Matrix.Include.Params
func (pt *PipelineTask) extractAllParams() Params {
allParams := pt.Params
if pt.Matrix.hasParams() {
allParams = append(allParams, pt.Matrix.Params...)
}
if pt.Matrix.hasInclude() {
for _, include := range pt.Matrix.Include {
allParams = append(allParams, include.Params...)
}
}
return allParams
}

func (pt *PipelineTask) validateMatrix(ctx context.Context) (errs *apis.FieldError) {
if pt.IsMatrixed() {
// This is an alpha feature and will fail validation if it's used in a pipeline spec
Expand Down
29 changes: 5 additions & 24 deletions pkg/apis/pipeline/v1beta1/pipeline_validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -183,26 +183,7 @@ func validatePipelineContextVariables(tasks []PipelineTask) *apis.FieldError {
)
var paramValues []string
for _, task := range tasks {
var matrixParams []Param
var includeParams []Param
if task.IsMatrixed() {
matrixParams = task.Matrix.Params
if task.Matrix.hasInclude() {
for _, include := range task.Matrix.Include {
includeParams = include.Params
}
}
}
for _, param := range append(task.Params, matrixParams...) {
paramValues = append(paramValues, param.Value.StringVal)
paramValues = append(paramValues, param.Value.ArrayVal...)
}

if task.Matrix.hasInclude() {
for _, param := range append(task.Params, includeParams...) {
paramValues = append(paramValues, param.Value.StringVal)
}
}
paramValues = task.extractAllParams().extractParamValues()
}
errs := validatePipelineContextVariablesInParamValues(paramValues, "context\\.pipelineRun", pipelineRunContextNames).
Also(validatePipelineContextVariablesInParamValues(paramValues, "context\\.pipeline", pipelineContextNames)).
Expand Down Expand Up @@ -442,9 +423,9 @@ func (ps *PipelineSpec) ValidateParamArrayIndex(ctx context.Context, params Para

paramsRefs := []string{}
for i := range ps.Tasks {
paramsRefs = append(paramsRefs, ps.Tasks[i].Params.extractParamValuesFromParams()...)
paramsRefs = append(paramsRefs, ps.Tasks[i].Params.extractParamValues()...)
if ps.Tasks[i].IsMatrixed() {
paramsRefs = append(paramsRefs, ps.Tasks[i].Matrix.Params.extractParamValuesFromParams()...)
paramsRefs = append(paramsRefs, ps.Tasks[i].Matrix.Params.extractParamValues()...)
}
for j := range ps.Tasks[i].Workspaces {
paramsRefs = append(paramsRefs, ps.Tasks[i].Workspaces[j].SubPath)
Expand All @@ -456,9 +437,9 @@ func (ps *PipelineSpec) ValidateParamArrayIndex(ctx context.Context, params Para
}

for i := range ps.Finally {
paramsRefs = append(paramsRefs, ps.Finally[i].Params.extractParamValuesFromParams()...)
paramsRefs = append(paramsRefs, ps.Finally[i].Params.extractParamValues()...)
if ps.Finally[i].IsMatrixed() {
paramsRefs = append(paramsRefs, ps.Finally[i].Matrix.Params.extractParamValuesFromParams()...)
paramsRefs = append(paramsRefs, ps.Finally[i].Matrix.Params.extractParamValues()...)
}
for _, wes := range ps.Finally[i].WhenExpressions {
paramsRefs = append(paramsRefs, wes.Values...)
Expand Down

0 comments on commit 45269ca

Please sign in to comment.