Skip to content

Commit

Permalink
Fix number of completed and failed task in case of ValidationFailed
Browse files Browse the repository at this point in the history
Signed-off-by: divyansh42 <[email protected]>
  • Loading branch information
divyansh42 committed Oct 30, 2024
1 parent a161298 commit d408bcc
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
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: 1, Cancelled 0), Skipped: 0"
reason: PipelineValidationFailed
status: "False"
type: Succeeded
childReferences:
Expand Down
10 changes: 8 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 @@ -500,7 +502,7 @@ func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, p
s := facts.getPipelineTasksCount()
// completed task is a collection of successful, failed, cancelled tasks (skipped tasks are reported separately)
cmTasks := s.Succeeded + s.Failed + s.Cancelled + s.IgnoredFailed
totalFailedTasks := s.Failed + s.IgnoredFailed
totalFailedTasks := s.Failed + s.IgnoredFailed + s.ValidationFailed

// The completion reason is set from the TaskRun completion reason
// by default, set it to ReasonRunning
Expand All @@ -524,6 +526,9 @@ func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, p
}

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 +724,7 @@ func (facts *PipelineRunFacts) getPipelineTasksCount() pipelineRunStatusCount {
Incomplete: 0,
SkippedDueToTimeout: 0,
IgnoredFailed: 0,
ValidationFailed: 0,
}
for _, t := range facts.State {
switch {
Expand All @@ -739,7 +745,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

0 comments on commit d408bcc

Please sign in to comment.