in pkg/controller/jenkins_job/jenkins_job_controller.go [92:139]
func (r *ReconcileJenkinsJob) Reconcile(ctx context.Context, request reconcile.Request) (reconcile.Result, error) {
log := r.log.WithValues(logNamespaceKey, request.Namespace, "Request.Name", request.Name)
log.Info("reconciling JenkinsJob had started")
jenkinsJob := &jenkinsApi.JenkinsJob{}
if err := r.client.Get(ctx, request.NamespacedName, jenkinsJob); err != nil {
if k8serrors.IsNotFound(err) {
log.Info("instance not found")
return reconcile.Result{}, nil
}
return reconcile.Result{}, fmt.Errorf("failed to Get JenkinsJob: %w", err)
}
if result, err := r.tryToDeleteJob(ctx, jenkinsJob); result != nil || err != nil {
return *result, err
}
if err := r.setOwners(ctx, jenkinsJob); err != nil {
return reconcile.Result{}, fmt.Errorf("failed to set owner reference: %w", err)
}
jobCanBeHandled, err := r.canJenkinsJobBeHandled(jenkinsJob)
if err != nil {
return reconcile.Result{}, fmt.Errorf("failed to check whether the jenkins job can be created: %w", err)
}
if !jobCanBeHandled {
log.V(2).Info("jenkins folder for stages is not ready yet")
return reconcile.Result{RequeueAfter: requeueAfter}, nil
}
result, err := r.handleJob(jenkinsJob)
if err != nil {
return reconcile.Result{}, fmt.Errorf("failed to handle JenkinsJob: %w", err)
}
if result.Requeue {
r.log.Info("the next job provision will be triggered in few minutes", "minutes", result.RequeueAfter)
return result, nil
}
log.Info("reconciling JenkinsJob has been finished")
return result, nil
}