4141import io .quarkus .deployment .builditem .ApplicationInfoBuildItem ;
4242import io .quarkus .deployment .builditem .CombinedIndexBuildItem ;
4343import io .quarkus .deployment .builditem .GeneratedFileSystemResourceBuildItem ;
44+ import io .quarkus .deployment .pkg .builditem .JarBuildItem ;
4445import io .quarkus .deployment .pkg .builditem .OutputTargetBuildItem ;
46+ import io .quarkus .kubernetes .deployment .KubernetesCommonHelper ;
4547import io .quarkus .kubernetes .deployment .KubernetesConfig ;
4648import io .quarkus .kubernetes .deployment .ResourceNameUtil ;
4749
@@ -69,7 +71,8 @@ public boolean getAsBoolean() {
6971 CSVMetadataBuildItem gatherCSVMetadata (KubernetesConfig kubernetesConfig ,
7072 ApplicationInfoBuildItem appConfiguration ,
7173 BundleGenerationConfiguration bundleConfiguration ,
72- CombinedIndexBuildItem combinedIndexBuildItem ) {
74+ CombinedIndexBuildItem combinedIndexBuildItem ,
75+ JarBuildItem jarBuildItem ) {
7376 final var index = combinedIndexBuildItem .getIndex ();
7477 final var defaultName = bundleConfiguration .packageName
7578 .orElse (ResourceNameUtil .getResourceName (kubernetesConfig , appConfiguration ));
@@ -82,7 +85,8 @@ CSVMetadataBuildItem gatherCSVMetadata(KubernetesConfig kubernetesConfig,
8285
8386 final var defaultReplaces = bundleConfiguration .replaces .orElse (null );
8487
85- final var sharedMetadataHolders = getSharedMetadataHolders (defaultName , defaultVersion , defaultReplaces , index );
88+ final var vcsUrl = getDefaultProviderURLFromSCMInfo (appConfiguration , jarBuildItem );
89+ final var sharedMetadataHolders = getSharedMetadataHolders (defaultName , defaultVersion , defaultReplaces , index , vcsUrl );
8690 final var csvGroups = new HashMap <CSVMetadataHolder , List <ReconcilerAugmentedClassInfo >>();
8791
8892 ClassUtils .getKnownReconcilers (index , log )
@@ -114,7 +118,7 @@ CSVMetadataBuildItem gatherCSVMetadata(KubernetesConfig kubernetesConfig,
114118 }
115119 }
116120 csvMetadata = createMetadataHolder (csvMetadataAnnotation ,
117- new CSVMetadataHolder (csvMetadataName , defaultVersion , defaultReplaces , origin ));
121+ new CSVMetadataHolder (csvMetadataName , defaultVersion , defaultReplaces , vcsUrl , origin ));
118122 }
119123 log .infov ("Assigning ''{0}'' reconciler to {1}" ,
120124 reconcilerInfo .nameOrFailIfUnset (),
@@ -127,6 +131,33 @@ CSVMetadataBuildItem gatherCSVMetadata(KubernetesConfig kubernetesConfig,
127131 return new CSVMetadataBuildItem (csvGroups );
128132 }
129133
134+ private static String getDefaultProviderURLFromSCMInfo (ApplicationInfoBuildItem appConfiguration ,
135+ JarBuildItem jarBuildItem ) {
136+ final var maybeProject = KubernetesCommonHelper .createProject (appConfiguration , Optional .empty (),
137+ jarBuildItem .getPath ());
138+ return maybeProject .map (project -> {
139+ final var scmInfo = project .getScmInfo ();
140+ if (scmInfo != null ) {
141+ var origin = scmInfo .getRemote ().get ("origin" );
142+ if (origin != null ) {
143+ int atSign = origin .indexOf ('@' );
144+ if (atSign > 0 ) {
145+ origin = origin .substring (atSign + 1 );
146+ origin = origin .replaceFirst (":" , "/" );
147+ origin = "https://" + origin ;
148+ }
149+
150+ int dotGit = origin .indexOf (".git" );
151+ if (dotGit < origin .length () - 1 ) {
152+ origin = origin .substring (0 , dotGit );
153+ }
154+ return origin ;
155+ }
156+ }
157+ return null ;
158+ }).orElse (null );
159+ }
160+
130161 private static ReconcilerAugmentedClassInfo augmentReconcilerInfo (
131162 ReconcilerAugmentedClassInfo reconcilerInfo ) {
132163 // if primary resource is a CR, check if it is annotated with CSVMetadata and augment it if it is
@@ -255,8 +286,8 @@ void generateBundle(ApplicationInfoBuildItem configuration,
255286 }
256287
257288 private Map <String , CSVMetadataHolder > getSharedMetadataHolders (String name , String version , String defaultReplaces ,
258- IndexView index ) {
259- CSVMetadataHolder csvMetadata = new CSVMetadataHolder (name , version , defaultReplaces , "default" );
289+ IndexView index , String vcsUrl ) {
290+ CSVMetadataHolder csvMetadata = new CSVMetadataHolder (name , version , defaultReplaces , vcsUrl , "default" );
260291 final var sharedMetadataImpls = index .getAllKnownImplementors (SHARED_CSV_METADATA );
261292 final var result = new HashMap <String , CSVMetadataHolder >(sharedMetadataImpls .size () + 1 );
262293 sharedMetadataImpls .forEach (sharedMetadataImpl -> {
0 commit comments