* Multiple fixes
- add goreleaser to the build / release process
- add kubectl plugin for job graphs visualization
- add installation scripts
- update dependencies
* Update the release & CRD content.
* Next set of improvements.
Code Quality
- Label constants: Added LabelWorkflowName, LabelGroupName, LabelJobName, LabelJobID in controllers/definitions.go
- Removed commented debug code: Cleaned up dead code from multiple files
- Removed unused dependencyTree field: Cleaned connPackage struct
- Fixed snake_case variables: Changed to camelCase (runGroup, groupDep, runJob, jobDep, k8sJob)
Kubernetes Best Practices
- Finalizers: Implemented handleDeletion() and deleteChildJobs() for proper cleanup
- Status enum validation: Added +kubebuilder:validation:Enum=pending;running;succeeded;failed;aborted
- ImagePullPolicy default: Created getImagePullPolicy() helper that defaults to IfNotPresent
- Resource limits support: Added Resources *corev1.ResourceRequirements to ManagedJobParameters
Observability
- Prometheus metrics: Created controllers/metrics.go with counters (jobs created/succeeded/failed), histogram (reconciliation duration), and gauge (active jobs)
- Structured logging: Added logger field to connPackage, used context-based logging throughout
Configuration
- Leader election ID: Made configurable via --leader-election-id flag
- Development mode: Made configurable via --dev-mode flag and LOG_LEVEL env var
Performance
- Dependency lookup optimization: Changed from O(n*m) to O(1) using lookup maps (jobDepMap, groupDepMap)
- Reconciliation backoff: Added RequeueAfter: 30*time.Second when workflow is running
Documentation & Testing
- Godoc documentation: Added comprehensive comments to API types and controller
- Unit tests: Added helpers_test.go with tests for all helper functions
- Integration tests: Added managedjob_controller_test.go with Ginkgo/Gomega tests
* Add the helm chart release.
* Add reasonable test coverage.