5252 RuntimeInstallOptions struct {
5353 RuntimeName string
5454 RuntimeToken string
55+ Insecure bool
5556 Version * semver.Version
5657 gsCloneOpts * git.CloneOptions
5758 insCloneOpts * git.CloneOptions
@@ -151,6 +152,7 @@ func NewRuntimeInstallCommand() *cobra.Command {
151152 return RunRuntimeInstall (ctx , & RuntimeInstallOptions {
152153 RuntimeName : args [0 ],
153154 Version : version ,
155+ Insecure : true ,
154156 gsCloneOpts : gsCloneOpts ,
155157 insCloneOpts : insCloneOpts ,
156158 KubeFactory : f ,
@@ -185,7 +187,7 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
185187
186188 runtimeCreationResponse , err := cfConfig .NewClient ().ArgoRuntime ().Create (opts .RuntimeName )
187189 if err != nil {
188- return fmt .Errorf ("failed to get a runtime creation response : %w" , err )
190+ return fmt .Errorf ("failed to create a new runtime : %w" , err )
189191 }
190192
191193 opts .RuntimeToken = runtimeCreationResponse .NewAccessToken
@@ -196,6 +198,7 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
196198 Namespace : opts .RuntimeName ,
197199 KubeFactory : opts .KubeFactory ,
198200 CloneOptions : opts .insCloneOpts ,
201+ Insecure : opts .Insecure ,
199202 })
200203 if err != nil {
201204 return fmt .Errorf ("failed to bootstrap repository: %w" , err )
@@ -223,8 +226,12 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
223226 return fmt .Errorf ("failed to create codefresh-cm: %w" , err )
224227 }
225228
226- if err = createComponentsReporter (ctx , opts .insCloneOpts , opts ); err != nil {
227- return fmt .Errorf ("failed to create components-reporter: %w" , err )
229+ if err = createEventsReporter (ctx , opts .insCloneOpts , opts ); err != nil {
230+ return fmt .Errorf ("failed to create events-reporter: %w" , err )
231+ }
232+
233+ if err = createWorkflowReporter (ctx , opts .insCloneOpts , opts ); err != nil {
234+ return fmt .Errorf ("failed to create workflows-reporter: %w" , err )
228235 }
229236
230237 if err = createDemoWorkflowTemplate (ctx , opts .gsCloneOpts , store .Get ().GitSourceName , opts .RuntimeName ); err != nil {
@@ -492,19 +499,24 @@ func persistRuntime(ctx context.Context, cloneOpts *git.CloneOptions, rt *runtim
492499 return err
493500}
494501
495- func createComponentsReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions ) error {
496- tokenSecret , err := getTokenSecret (opts .RuntimeName , opts .RuntimeToken )
502+ func createEventsReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions ) error {
503+ runtimeTokenSecret , err := getRuntimeTokenSecret (opts .RuntimeName , opts .RuntimeToken )
497504 if err != nil {
498505 return fmt .Errorf ("failed to create codefresh token secret: %w" , err )
499506 }
500507
501- if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , tokenSecret ); err != nil {
508+ argoTokenSecret , err := getArgoCDTokenSecret (ctx , opts .RuntimeName , opts .Insecure )
509+ if err != nil {
510+ return fmt .Errorf ("failed to create argocd token secret: %w" , err )
511+ }
512+
513+ if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , aputil .JoinManifests (runtimeTokenSecret , argoTokenSecret )); err != nil {
502514 return fmt .Errorf ("failed to create codefresh token: %w" , err )
503515 }
504516
505- resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().ComponentsReporterName , opts .RuntimeName , "resources" )
517+ resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().EventsReporterName , opts .RuntimeName , "resources" )
506518 appDef := & runtime.AppDef {
507- Name : store .Get ().ComponentsReporterName ,
519+ Name : store .Get ().EventsReporterName ,
508520 Type : application .AppTypeDirectory ,
509521 URL : cloneOpts .URL () + "/" + resPath ,
510522 }
@@ -521,21 +533,50 @@ func createComponentsReporter(ctx context.Context, cloneOpts *git.CloneOptions,
521533 return err
522534 }
523535
524- if err := createRBAC (repofs , resPath , opts .RuntimeName ); err != nil {
536+ if err := createEventsReporterEventSource (repofs , resPath , opts .RuntimeName , opts . Insecure ); err != nil {
525537 return err
526538 }
527539
528- if err := createEventSource (repofs , resPath , opts .RuntimeName ); err != nil {
540+ if err := createSensor (repofs , store . Get (). EventsReporterName , resPath , opts .RuntimeName , store . Get (). EventsReporterName , "events" ); err != nil {
529541 return err
530542 }
531543
532- if err := createSensor (repofs , store .Get ().ComponentsReporterName , resPath , opts .RuntimeName ,
533- store .Get ().ComponentsReporterName , opts .commonConfig .CodefreshBaseURL ); err != nil {
544+ _ , err = r .Persist (ctx , & git.PushOptions {
545+ CommitMsg : "Created Codefresh Event Reporter" ,
546+ })
547+ return err
548+ }
549+
550+ func createWorkflowReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions ) error {
551+ resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().WorkflowReporterName , opts .RuntimeName , "resources" )
552+ appDef := & runtime.AppDef {
553+ Name : store .Get ().WorkflowReporterName ,
554+ Type : application .AppTypeDirectory ,
555+ URL : cloneOpts .URL () + "/" + resPath ,
556+ }
557+ if err := appDef .CreateApp (ctx , opts .KubeFactory , cloneOpts , opts .RuntimeName , store .Get ().CFComponentType , opts .Version ); err != nil {
558+ return err
559+ }
560+
561+ r , repofs , err := cloneOpts .GetRepo (ctx )
562+ if err != nil {
563+ return err
564+ }
565+
566+ if err := createWorkflowReporterRBAC (repofs , resPath , opts .RuntimeName ); err != nil {
567+ return err
568+ }
569+
570+ if err := createWorkflowReporterEventSource (repofs , resPath , opts .RuntimeName ); err != nil {
571+ return err
572+ }
573+
574+ if err := createSensor (repofs , store .Get ().WorkflowReporterName , resPath , opts .RuntimeName , store .Get ().WorkflowReporterName , "workflows" ); err != nil {
534575 return err
535576 }
536577
537578 _ , err = r .Persist (ctx , & git.PushOptions {
538- CommitMsg : "Created Codefresh Resources " ,
579+ CommitMsg : "Created Codefresh Workflow Reporter " ,
539580 })
540581 return err
541582}
@@ -565,7 +606,7 @@ var getProjectInfoFromFile = func(repofs fs.FS, name string) (*argocdv1alpha1.Ap
565606 return proj , appSet , nil
566607}
567608
568- func getTokenSecret (namespace string , token string ) ([]byte , error ) {
609+ func getRuntimeTokenSecret (namespace string , token string ) ([]byte , error ) {
569610 return yaml .Marshal (& v1.Secret {
570611 TypeMeta : metav1.TypeMeta {
571612 APIVersion : "v1" ,
@@ -581,14 +622,35 @@ func getTokenSecret(namespace string, token string) ([]byte, error) {
581622 })
582623}
583624
584- func createRBAC (repofs fs.FS , path , runtimeName string ) error {
625+ func getArgoCDTokenSecret (ctx context.Context , namespace string , insecure bool ) ([]byte , error ) {
626+ token , err := cdutil .GenerateToken (ctx , namespace , "admin" , nil , insecure )
627+ if err != nil {
628+ return nil , err
629+ }
630+
631+ return yaml .Marshal (& v1.Secret {
632+ TypeMeta : metav1.TypeMeta {
633+ APIVersion : "v1" ,
634+ Kind : "Secret" ,
635+ },
636+ ObjectMeta : metav1.ObjectMeta {
637+ Name : store .Get ().ArgoCDTokenSecret ,
638+ Namespace : namespace ,
639+ },
640+ Data : map [string ][]byte {
641+ store .Get ().ArgoCDTokenKey : []byte (token ),
642+ },
643+ })
644+ }
645+
646+ func createWorkflowReporterRBAC (repofs fs.FS , path , runtimeName string ) error {
585647 serviceAccount := & v1.ServiceAccount {
586648 TypeMeta : metav1.TypeMeta {
587649 Kind : "ServiceAccount" ,
588650 APIVersion : "v1" ,
589651 },
590652 ObjectMeta : metav1.ObjectMeta {
591- Name : store .Get ().ComponentsReporterSA ,
653+ Name : store .Get ().CodefreshSA ,
592654 Namespace : runtimeName ,
593655 },
594656 }
@@ -599,7 +661,7 @@ func createRBAC(repofs fs.FS, path, runtimeName string) error {
599661 APIVersion : "rbac.authorization.k8s.io/v1" ,
600662 },
601663 ObjectMeta : metav1.ObjectMeta {
602- Name : store .Get ().ComponentsReporterName ,
664+ Name : store .Get ().CodefreshSA ,
603665 Namespace : runtimeName ,
604666 },
605667 Rules : []rbacv1.PolicyRule {
@@ -617,74 +679,73 @@ func createRBAC(repofs fs.FS, path, runtimeName string) error {
617679 APIVersion : "rbac.authorization.k8s.io/v1" ,
618680 },
619681 ObjectMeta : metav1.ObjectMeta {
620- Name : store .Get ().ComponentsReporterName ,
682+ Name : store .Get ().CodefreshSA ,
621683 Namespace : runtimeName ,
622684 },
623685 Subjects : []rbacv1.Subject {
624686 {
625687 Kind : "ServiceAccount" ,
626688 Namespace : runtimeName ,
627- Name : store .Get ().ComponentsReporterSA ,
689+ Name : store .Get ().CodefreshSA ,
628690 },
629691 },
630692 RoleRef : rbacv1.RoleRef {
631693 Kind : "Role" ,
632- Name : store .Get ().ComponentsReporterName ,
694+ Name : store .Get ().CodefreshSA ,
633695 },
634696 }
635697
636698 return repofs .WriteYamls (repofs .Join (path , "rbac.yaml" ), serviceAccount , role , roleBinding )
637699}
638700
639- func createEventSource (repofs fs.FS , path , namespace string ) error {
701+ func createEventsReporterEventSource (repofs fs.FS , path , namespace string , insecure bool ) error {
702+ port := 443
703+ if insecure {
704+ port = 80
705+ }
706+ argoCDSvc := fmt .Sprintf ("argocd-server.%s.svc:%d" , namespace , port )
707+
708+ eventSource := eventsutil .CreateEventSource (& eventsutil.CreateEventSourceOptions {
709+ Name : store .Get ().EventsReporterName ,
710+ Namespace : namespace ,
711+ EventBusName : store .Get ().EventBusName ,
712+ Generic : map [string ]eventsutil.CreateGenericEventSourceOptions {
713+ "events" : {
714+ URL : argoCDSvc ,
715+ TokenSecretName : store .Get ().ArgoCDTokenSecret ,
716+ Insecure : insecure ,
717+ },
718+ },
719+ })
720+ return repofs .WriteYamls (repofs .Join (path , "event-source.yaml" ), eventSource )
721+ }
722+
723+ func createWorkflowReporterEventSource (repofs fs.FS , path , namespace string ) error {
640724 eventSource := eventsutil .CreateEventSource (& eventsutil.CreateEventSourceOptions {
641- Name : store .Get ().ComponentsReporterName ,
725+ Name : store .Get ().WorkflowReporterName ,
642726 Namespace : namespace ,
643- ServiceAccountName : store .Get ().ComponentsReporterSA ,
727+ ServiceAccountName : store .Get ().CodefreshSA ,
644728 EventBusName : store .Get ().EventBusName ,
645729 Resource : map [string ]eventsutil.CreateResourceEventSourceOptions {
646- "components" : {
647- Group : "argoproj.io" ,
648- Version : "v1alpha1" ,
649- Resource : "applications" ,
650- Namespace : namespace ,
651- Selectors : []eventsutil.CreateSelectorOptions {
652- {
653- Key : store .Get ().LabelKeyCFType ,
654- Operation : "==" ,
655- Value : store .Get ().CFComponentType ,
656- },
657- },
658- },
659- "runtime" : {
730+ "workflows" : {
660731 Group : "argoproj.io" ,
661732 Version : "v1alpha1" ,
662- Resource : "appprojects " ,
733+ Resource : "workflows " ,
663734 Namespace : namespace ,
664- Selectors : []eventsutil.CreateSelectorOptions {
665- {
666- Key : store .Get ().LabelKeyCFType ,
667- Operation : "==" ,
668- Value : store .Get ().CFRuntimeType ,
669- },
670- },
671735 },
672736 },
673737 })
674738 return repofs .WriteYamls (repofs .Join (path , "event-source.yaml" ), eventSource )
675739}
676740
677- func createSensor (repofs fs.FS , name , path , namespace , eventSourceName , cfBaseURL string ) error {
741+ func createSensor (repofs fs.FS , name , path , namespace , eventSourceName , trigger string ) error {
678742 sensor := eventsutil .CreateSensor (& eventsutil.CreateSensorOptions {
679743 Name : name ,
680744 Namespace : namespace ,
681745 EventSourceName : eventSourceName ,
682746 EventBusName : store .Get ().EventBusName ,
683- TriggerURL : cfBaseURL + store .Get ().EventReportingEndpoint ,
684- Triggers : []string {
685- "components" ,
686- "runtime" ,
687- },
747+ TriggerURL : cfConfig .GetCurrentContext ().URL + store .Get ().EventReportingEndpoint ,
748+ Triggers : []string {trigger },
688749 })
689750 return repofs .WriteYamls (repofs .Join (path , "sensor.yaml" ), sensor )
690751}
@@ -752,7 +813,7 @@ func createGitSource(ctx context.Context, insCloneOpts *git.CloneOptions, gsClon
752813 eventSource := eventsutil .CreateEventSource (& eventsutil.CreateEventSourceOptions {
753814 Name : eventSourceName ,
754815 Namespace : runtimeName ,
755- ServiceAccountName : store .Get ().ComponentsReporterSA ,
816+ ServiceAccountName : store .Get ().CodefreshSA ,
756817 EventBusName : store .Get ().EventBusName ,
757818 Resource : map [string ]eventsutil.CreateResourceEventSourceOptions {
758819 // "clusterWorkflowTemplate": {
0 commit comments