func jobFailureLastOccurrence()

in metrics/internal/handlers/job_webhook.go [218:250]


func jobFailureLastOccurrence(ProjectID int, pipelineID int, jobName string) *time.Time {
	retried := true
	opts := gitlab.ListJobsOptions{
		ListOptions: gitlab.ListOptions{
			Page:    1,
			PerPage: 10,
		},
		IncludeRetried: &retried,
	}

	// find the prevous run
	for {
		jobs, response, err := gitlabOpsJobsClient.ListPipelineJobs(ProjectID, pipelineID, &opts)
		if err != nil {
			log.Fatal(err)
			break
		}

		for _, job := range jobs {
			if job.Status == buildStatusFailed && job.Name == jobName {
				return job.FinishedAt
			}
		}

		if response.NextPage == 0 {
			break
		}

		opts.Page = response.NextPage
	}

	return nil
}