Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version format check is too restrictive #263

Closed
uhafner opened this issue Jan 7, 2022 · 4 comments
Closed

Version format check is too restrictive #263

uhafner opened this issue Jan 7, 2022 · 4 comments

Comments

@uhafner
Copy link
Contributor

uhafner commented Jan 7, 2022

The version format check in RevApi seems to be too restrictive. Jenkins plugins recently moved to a CD approach which introduced version numbers that contain underscores. One example version is: 10.10.0-rc4533.47a_76fdb_150a_. It would be helpful if RevApi can also be used with those kind of versions. Previous versions of Jenkins artifacts already contained complex versions like 1.8.0-rc1165.d186b31c4c89, but those were parsed correctly by RevApi.

I also opened a bug in jenkinsci/incrementals-tools#27 but I think it might be better to have a fix here.

Exception:

14:18:26  [ERROR] Failed to execute goal org.revapi:revapi-maven-plugin:0.14.6:check (run-revapi) on project analysis-model: Failed to execute the API analysis. Failed to analyze archives: Extension revapi.semver.ignore failed to initialize: Could not parse the version string '10.10.0-rc4533.47a_76fdb_150a_'. It does not follow the semver schema. -> [Help 1]
14:18:26  org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.revapi:revapi-maven-plugin:0.14.6:check (run-revapi) on project analysis-model: Failed to execute the API analysis.
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
14:18:26      at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
14:18:26      at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
14:18:26      at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
14:18:26      at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
14:18:26      at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
14:18:26      at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
14:18:26      at java.lang.reflect.Method.invoke (Method.java:566)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
14:18:26  Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to execute the API analysis.
14:18:26      at org.revapi.maven.CheckMojo.doExecute (CheckMojo.java:153)
14:18:26      at org.revapi.maven.AbstractRevapiMojo.execute (AbstractRevapiMojo.java:397)
14:18:26      at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
14:18:26      at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
14:18:26      at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
14:18:26      at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
14:18:26      at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
14:18:26      at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
14:18:26      at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
14:18:26      at java.lang.reflect.Method.invoke (Method.java:566)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
14:18:26  Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to analyze archives
14:18:26      at org.revapi.maven.Analyzer.analyze (Analyzer.java:447)
14:18:26      at org.revapi.maven.AbstractRevapiMojo.analyze (AbstractRevapiMojo.java:416)
14:18:26      at org.revapi.maven.CheckMojo.doExecute (CheckMojo.java:97)
14:18:26      at org.revapi.maven.AbstractRevapiMojo.execute (AbstractRevapiMojo.java:397)
14:18:26      at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
14:18:26      at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
14:18:26      at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
14:18:26      at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
14:18:26      at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
14:18:26      at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
14:18:26      at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
14:18:26      at java.lang.reflect.Method.invoke (Method.java:566)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
14:18:26  Caused by: java.lang.IllegalStateException: Extension revapi.semver.ignore failed to initialize: Could not parse the version string '10.10.0-rc4533.47a_76fdb_150a_'. It does not follow the semver schema.
14:18:26      at org.revapi.Revapi.lambda$analyze$2 (Revapi.java:197)
14:18:26      at java.util.stream.ForEachOps$ForEachOp$OfRef.accept (ForEachOps.java:183)
14:18:26      at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195)
14:18:26      at java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet.lambda$entryConsumer$0 (Collections.java:1576)
14:18:26      at java.util.HashMap$EntrySpliterator.forEachRemaining (HashMap.java:1764)
14:18:26      at java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator.forEachRemaining (Collections.java:1601)
14:18:26      at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:734)
14:18:26      at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:735)
14:18:26      at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:735)
14:18:26      at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:735)
14:18:26      at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:484)
14:18:26      at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474)
14:18:26      at java.util.stream.ForEachOps$ForEachOp.evaluateSequential (ForEachOps.java:150)
14:18:26      at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential (ForEachOps.java:173)
14:18:26      at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234)
14:18:26      at java.util.stream.ReferencePipeline.forEach (ReferencePipeline.java:497)
14:18:26      at org.revapi.Revapi.analyze (Revapi.java:189)
14:18:26      at org.revapi.maven.Analyzer.analyze (Analyzer.java:445)
14:18:26      at org.revapi.maven.AbstractRevapiMojo.analyze (AbstractRevapiMojo.java:416)
14:18:26      at org.revapi.maven.CheckMojo.doExecute (CheckMojo.java:97)
14:18:26      at org.revapi.maven.AbstractRevapiMojo.execute (AbstractRevapiMojo.java:397)
14:18:26      at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
14:18:26      at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
14:18:26      at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
14:18:26      at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
14:18:26      at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
14:18:26      at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
14:18:26      at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
14:18:26      at java.lang.reflect.Method.invoke (Method.java:566)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
14:18:26  Caused by: java.lang.IllegalArgumentException: Could not parse the version string '10.10.0-rc4533.47a_76fdb_150a_'. It does not follow the semver schema.
14:18:26      at org.revapi.basic.SemverIgnoreTransform$Version.parse (SemverIgnoreTransform.java:234)
14:18:26      at org.revapi.basic.SemverIgnoreTransform.initialize (SemverIgnoreTransform.java:165)
14:18:26      at org.revapi.Revapi.lambda$analyze$2 (Revapi.java:193)
14:18:26      at java.util.stream.ForEachOps$ForEachOp$OfRef.accept (ForEachOps.java:183)
14:18:26      at java.util.stream.ReferencePipeline$3$1.accept (ReferencePipeline.java:195)
14:18:26      at java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet.lambda$entryConsumer$0 (Collections.java:1576)
14:18:26      at java.util.HashMap$EntrySpliterator.forEachRemaining (HashMap.java:1764)
14:18:26      at java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator.forEachRemaining (Collections.java:1601)
14:18:26      at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:734)
14:18:26      at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:735)
14:18:26      at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:735)
14:18:26      at java.util.stream.Streams$ConcatSpliterator.forEachRemaining (Streams.java:735)
14:18:26      at java.util.stream.AbstractPipeline.copyInto (AbstractPipeline.java:484)
14:18:26      at java.util.stream.AbstractPipeline.wrapAndCopyInto (AbstractPipeline.java:474)
14:18:26      at java.util.stream.ForEachOps$ForEachOp.evaluateSequential (ForEachOps.java:150)
14:18:26      at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential (ForEachOps.java:173)
14:18:26      at java.util.stream.AbstractPipeline.evaluate (AbstractPipeline.java:234)
14:18:26      at java.util.stream.ReferencePipeline.forEach (ReferencePipeline.java:497)
14:18:26      at org.revapi.Revapi.analyze (Revapi.java:189)
14:18:26      at org.revapi.maven.Analyzer.analyze (Analyzer.java:445)
14:18:26      at org.revapi.maven.AbstractRevapiMojo.analyze (AbstractRevapiMojo.java:416)
14:18:26      at org.revapi.maven.CheckMojo.doExecute (CheckMojo.java:97)
14:18:26      at org.revapi.maven.AbstractRevapiMojo.execute (AbstractRevapiMojo.java:397)
14:18:26      at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
14:18:26      at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
14:18:26      at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
14:18:26      at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
14:18:26      at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
14:18:26      at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
14:18:26      at org.apache.maven.cli.MavenCli.execute (MavenCli.java:972)
14:18:26      at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
14:18:26      at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
14:18:26      at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
14:18:26      at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
14:18:26      at java.lang.reflect.Method.invoke (Method.java:566)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
14:18:26      at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
14:18:26  [ERROR] 

Failing pull requests:

@uhafner uhafner changed the title Version format check is too restricitve Version format check is too restrictive Jan 7, 2022
@metlos
Copy link
Member

metlos commented Jan 10, 2022

Revapi parses the version strings assuming semver. _ is not allowed by the semver spec, but frankly I don't see a reason not to support it in the suffix.

@metlos metlos closed this as completed in 5c69ad2 Jan 21, 2022
@uhafner
Copy link
Contributor Author

uhafner commented Jan 21, 2022

🎉

@uhafner
Copy link
Contributor Author

uhafner commented Mar 17, 2022

Any plans for a new release?

@metlos
Copy link
Member

metlos commented Jul 1, 2022

revapi-maven-plugin:0.14.7 bundles the new revapi-basic-features that should support this. See strictSemver in https://revapi.org/revapi-basic-features/0.12.6/versions.html#_sample_configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants