in pkg/controller/jenkins_jobbuildrun/controller.go [74:126]
func (r *Reconcile) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
var result reconcile.Result
reqLogger := r.log.WithValues("Request.Namespace", request.Namespace, "Request.Name", request.Name)
reqLogger.V(2).Info("Reconciling JenkinsJobBuildRun has been started")
var instance jenkinsApi.JenkinsJobBuildRun
if err := r.client.Get(ctx, request.NamespacedName, &instance); err != nil {
if k8serrors.IsNotFound(err) {
reqLogger.Info("instance not found")
return result, nil
}
return result, fmt.Errorf("failed to get JenkinsJobBuildRun instance: %w", err)
}
if instance.Status.Status == jenkinsApi.JobBuildRunStatusCompleted {
reqLogger.V(2).Info("Reconciling JenkinsJobBuildRun has been finished, job already completed")
if err := r.deleteExpiredBuilds(&instance); err != nil {
return result, fmt.Errorf("failed to delete expired builds: %w", err)
}
return result, nil
}
jc, err := r.jenkinsClientFactory.MakeNewClient(&instance.ObjectMeta, instance.Spec.OwnerName)
if err != nil {
return result,
fmt.Errorf("failed to create gojenkins client: %w", err)
}
requeue, err := tryToReconcile(&instance, jc)
if err != nil {
r.log.Error(err, "error during reconciliation", "instance", instance)
result.RequeueAfter = helper.DefaultRequeueTime * time.Second
return result, nil
}
result.RequeueAfter = requeue
instance.Status.LastUpdated = metav1.NewTime(time.Now())
if err := r.client.Status().Update(context.Background(), &instance); err != nil {
r.log.Error(err, "unable to update status", "instance", instance)
}
reqLogger.V(2).Info("Reconciling JenkinsJobBuildRun has been finished")
return result, nil
}