Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[release-v0.65.x] Add Failed Validation group in message for the status message in PipelineRun #8372

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pkg/reconciler/pipelinerun/pipelinerun_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1290,8 +1290,8 @@ status:
image: busybox
script: 'exit 0'
conditions:
- message: "Tasks Completed: 2 (Failed: 1, Cancelled 0), Skipped: 0"
reason: Failed
- message: "Tasks Completed: 1 (Failed: 0, Cancelled 0), Skipped: 0, Failed Validation: 1"
reason: PipelineValidationFailed
status: "False"
type: Succeeded
childReferences:
Expand Down
15 changes: 13 additions & 2 deletions pkg/reconciler/pipelinerun/resources/pipelinerunstate.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@ type pipelineRunStatusCount struct {
Incomplete int
// count of tasks skipped due to the relevant timeout having elapsed before the task is launched
SkippedDueToTimeout int
// count of validation failed task and taskrun not created
ValidationFailed int
}

// ResetSkippedCache resets the skipped cache in the facts map
Expand Down Expand Up @@ -498,7 +500,8 @@ func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, p
// report the count in PipelineRun Status
// get the count of successful tasks, failed tasks, cancelled tasks, skipped task, and incomplete tasks
s := facts.getPipelineTasksCount()
// completed task is a collection of successful, failed, cancelled tasks (skipped tasks are reported separately)
// completed task is a collection of successful, failed, cancelled tasks
// (skipped tasks and validation failed tasks are reported separately)
cmTasks := s.Succeeded + s.Failed + s.Cancelled + s.IgnoredFailed
totalFailedTasks := s.Failed + s.IgnoredFailed

Expand All @@ -518,12 +521,19 @@ func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, p
message = fmt.Sprintf("Tasks Completed: %d (Failed: %d, Cancelled %d), Skipped: %d",
cmTasks, totalFailedTasks, s.Cancelled, s.Skipped)
}
// append validation failed count in the message
if s.ValidationFailed > 0 {
message += fmt.Sprintf(", Failed Validation: %d", s.ValidationFailed)
}
// Set reason to ReasonCompleted - At least one is skipped
if s.Skipped > 0 {
reason = v1.PipelineRunReasonCompleted.String()
}

switch {
case s.ValidationFailed > 0:
reason = v1.PipelineRunReasonFailedValidation.String()
status = corev1.ConditionFalse
case s.Failed > 0 || s.SkippedDueToTimeout > 0:
// Set reason to ReasonFailed - At least one failed
reason = v1.PipelineRunReasonFailed.String()
Expand Down Expand Up @@ -719,6 +729,7 @@ func (facts *PipelineRunFacts) getPipelineTasksCount() pipelineRunStatusCount {
Incomplete: 0,
SkippedDueToTimeout: 0,
IgnoredFailed: 0,
ValidationFailed: 0,
}
for _, t := range facts.State {
switch {
Expand All @@ -739,7 +750,7 @@ func (facts *PipelineRunFacts) getPipelineTasksCount() pipelineRunStatusCount {
s.Failed++
}
case t.isValidationFailed(facts.ValidationFailedTask):
s.Failed++
s.ValidationFailed++
// increment skipped and skipped due to timeout counters since the task was skipped due to the pipeline, tasks, or finally timeout being reached before the task was launched
case t.Skip(facts).SkippingReason == v1.PipelineTimedOutSkip ||
t.Skip(facts).SkippingReason == v1.TasksTimedOutSkip ||
Expand Down