@@ -26,6 +26,7 @@ import (
26
26
"github.com/codefresh-io/cli-v2/pkg/runtime"
27
27
"github.com/codefresh-io/cli-v2/pkg/store"
28
28
"github.com/codefresh-io/cli-v2/pkg/util"
29
+ argodashboardutil "github.com/codefresh-io/cli-v2/pkg/util/argo-agent"
29
30
cdutil "github.com/codefresh-io/cli-v2/pkg/util/cd"
30
31
eventsutil "github.com/codefresh-io/cli-v2/pkg/util/events"
31
32
ingressutil "github.com/codefresh-io/cli-v2/pkg/util/ingress"
@@ -274,6 +275,10 @@ func RunRuntimeInstall(ctx context.Context, opts *RuntimeInstallOptions) error {
274
275
}
275
276
}
276
277
278
+ if err = createCodefreshArgoAgentReporter (ctx , opts .insCloneOpts , opts , rt ); err != nil {
279
+ return fmt .Errorf ("failed to create argocd-agent-reporter: %w" , err )
280
+ }
281
+
277
282
if err = createEventsReporter (ctx , opts .insCloneOpts , opts , rt ); err != nil {
278
283
return fmt .Errorf ("failed to create events-reporter: %w" , err )
279
284
}
@@ -745,7 +750,12 @@ func createEventsReporter(ctx context.Context, cloneOpts *git.CloneOptions, opts
745
750
return fmt .Errorf ("failed to create argocd token secret: %w" , err )
746
751
}
747
752
748
- if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , aputil .JoinManifests (runtimeTokenSecret , argoTokenSecret )); err != nil {
753
+ argoAgentCFTokenSecret , err := getArgoCDAgentTokenSecret (ctx , cfConfig .GetCurrentContext ().Token , opts .RuntimeName )
754
+ if err != nil {
755
+ return fmt .Errorf ("failed to create argocd token secret: %w" , err )
756
+ }
757
+
758
+ if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , aputil .JoinManifests (runtimeTokenSecret , argoTokenSecret , argoAgentCFTokenSecret )); err != nil {
749
759
return fmt .Errorf ("failed to create codefresh token: %w" , err )
750
760
}
751
761
@@ -778,6 +788,41 @@ func createEventsReporter(ctx context.Context, cloneOpts *git.CloneOptions, opts
778
788
return err
779
789
}
780
790
791
+ func createCodefreshArgoAgentReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions , rt * runtime.Runtime ) error {
792
+ argoAgentCFTokenSecret , err := getArgoCDAgentTokenSecret (ctx , cfConfig .GetCurrentContext ().Token , opts .RuntimeName )
793
+ if err != nil {
794
+ return fmt .Errorf ("failed to create argocd token secret: %w" , err )
795
+ }
796
+
797
+ if err = opts .KubeFactory .Apply (ctx , opts .RuntimeName , aputil .JoinManifests (argoAgentCFTokenSecret )); err != nil {
798
+ return fmt .Errorf ("failed to create codefresh token: %w" , err )
799
+ }
800
+
801
+ resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().ArgoCDAgentReporterName , opts .RuntimeName , "resources" )
802
+ appDef := & runtime.AppDef {
803
+ Name : store .Get ().ArgoCDAgentReporterName ,
804
+ Type : application .AppTypeDirectory ,
805
+ URL : cloneOpts .URL () + "/" + resPath ,
806
+ }
807
+ if err := appDef .CreateApp (ctx , opts .KubeFactory , cloneOpts , opts .RuntimeName , store .Get ().CFComponentType ); err != nil {
808
+ return err
809
+ }
810
+
811
+ r , _ , err := cloneOpts .GetRepo (ctx )
812
+ if err != nil {
813
+ return err
814
+ }
815
+
816
+ if err := createCodefreshArgoDashboardAgent (ctx , resPath , cloneOpts , rt ); err != nil {
817
+ return err
818
+ }
819
+
820
+ _ , err = r .Persist (ctx , & git.PushOptions {
821
+ CommitMsg : "Created ArgoCD Agent Reporter" ,
822
+ })
823
+ return err
824
+ }
825
+
781
826
func createWorkflowReporter (ctx context.Context , cloneOpts * git.CloneOptions , opts * RuntimeInstallOptions ) error {
782
827
resPath := cloneOpts .FS .Join (apstore .Default .AppsDir , store .Get ().WorkflowReporterName , opts .RuntimeName , "resources" )
783
828
appDef := & runtime.AppDef {
@@ -875,6 +920,22 @@ func getArgoCDTokenSecret(ctx context.Context, namespace string, insecure bool)
875
920
})
876
921
}
877
922
923
+ func getArgoCDAgentTokenSecret (ctx context.Context , token string , namespace string ) ([]byte , error ) {
924
+ return yaml .Marshal (& v1.Secret {
925
+ TypeMeta : metav1.TypeMeta {
926
+ APIVersion : "v1" ,
927
+ Kind : "Secret" ,
928
+ },
929
+ ObjectMeta : metav1.ObjectMeta {
930
+ Name : store .Get ().ArgoCDAgentCFTokenSecret ,
931
+ Namespace : namespace ,
932
+ },
933
+ Data : map [string ][]byte {
934
+ store .Get ().ArgoCDAgentCFTokenKey : []byte (token ),
935
+ },
936
+ })
937
+ }
938
+
878
939
func createWorkflowReporterRBAC (repofs fs.FS , path , runtimeName string ) error {
879
940
serviceAccount := & v1.ServiceAccount {
880
941
TypeMeta : metav1.TypeMeta {
@@ -982,3 +1043,22 @@ func createSensor(repofs fs.FS, name, path, namespace, eventSourceName, trigger,
982
1043
})
983
1044
return repofs .WriteYamls (repofs .Join (path , "sensor.yaml" ), sensor )
984
1045
}
1046
+
1047
+ func createCodefreshArgoDashboardAgent (ctx context.Context , path string , cloneOpts * git.CloneOptions , rt * runtime.Runtime ) error {
1048
+ _ , fs , err := cloneOpts .GetRepo (ctx )
1049
+ if err != nil {
1050
+ return err
1051
+ }
1052
+ resource , err := argodashboardutil .CreateAgentResource ()
1053
+ if err != nil {
1054
+ return err
1055
+ }
1056
+
1057
+ kust := argodashboardutil .CreateAgentResourceKustomize (& argodashboardutil.CreateAgentOptions {Namespace : rt .Namespace , Name : rt .Name })
1058
+
1059
+ if err = kustutil .WriteKustomization (fs , & kust , path ); err != nil {
1060
+ return err
1061
+ }
1062
+
1063
+ return billyUtils .WriteFile (fs , fs .Join (path , "argocd-agent.yaml" ), resource , 0666 )
1064
+ }
0 commit comments