in cmd/manager/main.go [62:245]
func main() {
var (
metricsAddr string
enableLeaderElection bool
probeAddr string
)
flag.StringVar(&metricsAddr, "metrics-bind-address", ":8080", "The address the metric endpoint binds to.")
flag.StringVar(&probeAddr, "health-probe-bind-address", ":8081", "The address the probe endpoint binds to.")
flag.BoolVar(&enableLeaderElection, "leader-elect", clusterUtil.RunningInCluster(),
"Enable leader election for controller manager. "+
"Enabling this will ensure there is only one active controller manager.")
mode, err := clusterUtil.GetDebugMode()
if err != nil {
setupLog.Error(err, "unable to get debug mode value")
os.Exit(1)
}
opts := zap.Options{
Development: mode,
}
opts.BindFlags(flag.CommandLine)
flag.Parse()
utilruntime.Must(clientgoscheme.AddToScheme(scheme))
utilruntime.Must(jenkinsApiV1alpha1.AddToScheme(scheme))
utilruntime.Must(jenkinsApiV1.AddToScheme(scheme))
utilruntime.Must(cdPipeApi.AddToScheme(scheme))
utilruntime.Must(codebaseApi.AddToScheme(scheme))
utilruntime.Must(edpCompApi.AddToScheme(scheme))
utilruntime.Must(gerritApi.AddToScheme(scheme))
utilruntime.Must(keycloakApi.AddToScheme(scheme))
v := buildInfo.Get()
ctrl.SetLogger(zap.New(zap.UseFlagOptions(&opts)))
setupLog.Info("Starting the Jenkins Operator",
"version", v.Version,
"git-commit", v.GitCommit,
"git-tag", v.GitTag,
"build-date", v.BuildDate,
"go-version", v.Go,
"go-client", v.KubectlVersion,
"platform", v.Platform,
)
ns, err := clusterUtil.GetWatchNamespace()
if err != nil {
setupLog.Error(err, "unable to get watch namespace")
os.Exit(1)
}
cfg := ctrl.GetConfigOrDie()
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
Scheme: scheme,
MetricsBindAddress: metricsAddr,
HealthProbeBindAddress: probeAddr,
Port: 9443,
LeaderElection: enableLeaderElection,
LeaderElectionID: jenkinsOperatorLock,
MapperProvider: func(c *rest.Config) (meta.RESTMapper, error) {
return apiutil.NewDynamicRESTMapper(cfg)
},
Namespace: ns,
})
if err != nil {
setupLog.Error(err, "unable to start manager")
os.Exit(1)
}
cl, err := client.New(mgr.GetConfig(), client.Options{
Scheme: mgr.GetScheme(),
Mapper: mgr.GetRESTMapper(),
})
if err != nil {
setupLog.Error(err, "unable to create uncached client")
os.Exit(1)
}
ctrlLog := ctrl.Log.WithName("controllers")
cdStageJd := jenkinsdeployment.NewReconcileCDStageJenkinsDeployment(cl, mgr.GetScheme(), ctrlLog)
if err = cdStageJd.SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "cd-stage-jenkins-deployment")
os.Exit(1)
}
env, err := helper.GetPlatformTypeEnv()
if err != nil {
setupLog.Error(err, "unable to get platform type env")
os.Exit(1)
}
ps, err := platform.NewPlatformService(env, mgr.GetScheme(), cl)
if err != nil {
setupLog.Error(err, "unable to create platform service")
}
jenkinsCtrl := jenkins.NewReconcileJenkins(cl, mgr.GetScheme(), ctrlLog, ps)
if err := jenkinsCtrl.SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins")
os.Exit(1)
}
jfCtrl := jenkinsFolder.NewReconcileJenkinsFolder(cl, mgr.GetScheme(), ctrlLog, ps)
if err := jfCtrl.SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins-folder")
os.Exit(1)
}
jjCtrl := jenkinsJob.NewReconcileJenkinsJob(cl, mgr.GetScheme(), ctrlLog, ps)
if err := jjCtrl.SetupWithManager(
mgr,
getMaxConcurrentReconciles(jenkinsJobMaxConcurrentReconcilesEnv),
); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins-job")
os.Exit(1)
}
jsCtrl := jenkinsscript.NewReconcileJenkinsScript(cl, mgr.GetScheme(), ctrlLog, ps)
if err := jsCtrl.SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins-script")
os.Exit(1)
}
jsaCtrl := jenkinsserviceaccount.NewReconcileJenkinsServiceAccount(cl, mgr.GetScheme(), ctrlLog, ps)
if err := jsaCtrl.SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins-service-account")
os.Exit(1)
}
jjbr := jenkins_jobbuildrun.NewReconciler(cl, ctrlLog, ps)
if err := jjbr.SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins-job-build-run")
os.Exit(1)
}
if err := jenkins_authorizationrole.NewReconciler(cl, ctrlLog, ps).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins-auth-role")
os.Exit(1)
}
if err := jenkins_authorizationrolemapping.NewReconciler(cl, ctrlLog, ps).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins-auth-role")
os.Exit(1)
}
if err := jenkinsagent.NewReconciler(cl, ctrlLog).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins-agent")
os.Exit(1)
}
templatePath := defaultEnv(
"TEMPLATES_PATH", path.Join(platformHelper.DefaultConfigsAbsolutePath, jenkinsService.DefaultTemplatesDirectory))
if err := sharedLibrary.NewReconcile(cl, ctrlLog, ps, templatePath).SetupWithManager(mgr); err != nil {
setupLog.Error(err, "unable to create controller", "controller", "jenkins-shared-libraries")
os.Exit(1)
}
if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
setupLog.Error(err, "unable to set up health check")
os.Exit(1)
}
if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil {
setupLog.Error(err, "unable to set up ready check")
os.Exit(1)
}
setupLog.Info("starting manager")
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
setupLog.Error(err, "problem running manager")
os.Exit(1)
}
}