diff --git a/controllers/functionjob_controller.go b/controllers/functionjob_controller.go index 1b99f90..761257b 100644 --- a/controllers/functionjob_controller.go +++ b/controllers/functionjob_controller.go @@ -112,6 +112,14 @@ func (r *FunctionJobReconciler) Reconcile(ctx context.Context, req ctrl.Request) // startJobBuild запускает kaniko сборку образа и переводит FunctionJob в фазу Building. func (r *FunctionJobReconciler) startJobBuild(ctx context.Context, fj *slessv1alpha1.FunctionJob) (ctrl.Result, error) { logger := log.FromContext(ctx) + + // S3Key пустой — код ещё не загружен (provider делает upload после создания CRD). + // Ждём: через 5 секунд provider успеет выполнить UploadJobCode → S3Key заполнится. + if fj.Spec.S3Key == "" { + logger.Info("s3key empty, waiting for code upload", "job", fj.Name) + return ctrl.Result{RequeueAfter: 5 * time.Second}, nil + } + buildJobName, err := r.Builder.Build(ctx, r.OperatorNamespace, fj.Name, fj.Spec.S3Key) if err != nil { fj.Status.Phase = slessv1alpha1.FunctionJobPhaseFailed