jutzig / github-release-plugin

uses the github release api to upload files
69 stars 24 forks source link

Already exists handling corrupt since 1.3.0 #40

Closed julian-eggers closed 4 years ago

julian-eggers commented 5 years ago

Hi,

first of all: very nice maven-plugin ;)

Before v1.3.0 the plugin was enable to handle already existing releases. Since 1.3.0 the following error breaks my ci-build:

[INFO] --- github-release-plugin:1.3.0:release (github-upload) @ springboot-testcontainer-rabbitmq --- [INFO] Release 0.1.0-RC8 already exists. Not creating [INFO] Creating release 0.1.0-RC8 [ERROR] org.kohsuke.github.HttpException: {"message":"Validation Failed","errors":[{"resource":"Release","code":"already_exists","field":"tag_name"}],"documentation_url":"https://developer.github.com/v3/repos/releases/#create-a-release"} at org.kohsuke.github.Requester.handleApiError (Requester.java:703) at org.kohsuke.github.Requester._to (Requester.java:306) at org.kohsuke.github.Requester.to (Requester.java:247) at org.kohsuke.github.GHReleaseBuilder.create (GHReleaseBuilder.java:71) at de.jutzig.github.release.plugin.UploadMojo.execute (UploadMojo.java:214) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356) Caused by: org.kohsuke.github.HttpException: Server returned HTTP response code: 422, message: 'Unprocessable Entity' for URL: https://api.github.com/repos/springboot-testcontainer/springboot-testcontainer-rabbitmq/releases at org.kohsuke.github.Requester.parse (Requester.java:646) at org.kohsuke.github.Requester.parse (Requester.java:607) at org.kohsuke.github.Requester._to (Requester.java:285) at org.kohsuke.github.Requester.to (Requester.java:247) at org.kohsuke.github.GHReleaseBuilder.create (GHReleaseBuilder.java:71) at de.jutzig.github.release.plugin.UploadMojo.execute (UploadMojo.java:214) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356) Caused by: java.io.IOException: Server returned HTTP response code: 422 for URL: https://api.github.com/repos/springboot-testcontainer/springboot-testcontainer-rabbitmq/releases at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance (Constructor.java:423) at sun.net.www.protocol.http.HttpURLConnection$10.run (HttpURLConnection.java:1944) at sun.net.www.protocol.http.HttpURLConnection$10.run (HttpURLConnection.java:1939) at java.security.AccessController.doPrivileged (Native Method) at sun.net.www.protocol.http.HttpURLConnection.getChainedException (HttpURLConnection.java:1938) at sun.net.www.protocol.http.HttpURLConnection.getInputStream0 (HttpURLConnection.java:1508) at sun.net.www.protocol.http.HttpURLConnection.getInputStream (HttpURLConnection.java:1492) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream (HttpsURLConnectionImpl.java:263) at org.kohsuke.github.Requester.parse (Requester.java:625) at org.kohsuke.github.Requester.parse (Requester.java:607) at org.kohsuke.github.Requester._to (Requester.java:285) at org.kohsuke.github.Requester.to (Requester.java:247) at org.kohsuke.github.GHReleaseBuilder.create (GHReleaseBuilder.java:71) at de.jutzig.github.release.plugin.UploadMojo.execute (UploadMojo.java:214) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356) Caused by: java.io.IOException: Server returned HTTP response code: 422 for URL: https://api.github.com/repos/springboot-testcontainer/springboot-testcontainer-rabbitmq/releases at sun.net.www.protocol.http.HttpURLConnection.getInputStream0 (HttpURLConnection.java:1894) at sun.net.www.protocol.http.HttpURLConnection.getInputStream (HttpURLConnection.java:1492) at java.net.HttpURLConnection.getResponseCode (HttpURLConnection.java:480) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode (HttpsURLConnectionImpl.java:347) at org.kohsuke.github.Requester.parse (Requester.java:615) at org.kohsuke.github.Requester.parse (Requester.java:607) at org.kohsuke.github.Requester._to (Requester.java:285) at org.kohsuke.github.Requester.to (Requester.java:247) at org.kohsuke.github.GHReleaseBuilder.create (GHReleaseBuilder.java:71) at de.jutzig.github.release.plugin.UploadMojo.execute (UploadMojo.java:214) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154) at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105) at org.apache.maven.cli.MavenCli.execute (MavenCli.java:954) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:498) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289) at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)

I think the error can be found in the following lines: https://github.com/jutzig/github-release-plugin/commit/a26d5ba74e5c84cae6e18b5acffab79dda61d765#diff-8905935e3932657333c9c228eceb810fR182

carlspring commented 5 years ago

Hi,

Are you using <deleteRelease>true</deleteRelease>?

julian-eggers commented 5 years ago

No, my config:

  <plugin>
    <groupId>de.jutzig</groupId>
    <artifactId>github-release-plugin</artifactId>
    <version>${github-release-plugin.version}</version>
    <executions>
      <execution>
        <id>github-upload</id>
        <phase>deploy</phase>
        <goals>
          <goal>release</goal>
        </goals>
        <configuration>
          <releaseName>${project.version}</releaseName>
          <tag>${project.version}</tag>
          <artifact>${project.build.directory}/${project.artifactId}-${project.version}.jar</artifact>
        </configuration>
      </execution>
    </executions>
  </plugin>
carlspring commented 5 years ago

Could you try it?

julian-eggers commented 5 years ago

It works, but I dont want to overwrite/recreate the release. It should only be skipped.

carlspring commented 5 years ago

I'm not quite sure I get what the use case and your problem is. Would you mind explaining in more detail...?

julian-eggers commented 5 years ago

I have a Jenkins which builds my master-branch after merge. It also builds the master every night. Steps: Checkout, Compile, Test, Build JAR, deploy to Github, deploy to MavenCentral.

The deploy-step is only executed after merge to master. The Nighty-Build normally skips the last 2 steps. This worked fine with 1.2.0, but breaks with 1.3.0.

For me it is a bug in the plugin: It first says there is already a release, but after that it tries to create a release, which is blocked by github.

I dont want to overwrite/delete/recreate the release. The goal should only skipped, when it realizes that there is already a release.

tjuerge commented 4 years ago

I've run into the same issue: My multi-module build uses this plugin in various modules to add multiple artifacts to the same release. The first call to the plugin works - but the next call fails because it tries to create the release again:

[INFO] [ERROR] Failed to execute goal de.jutzig:github-release-plugin:1.3.0:release (github-upload) on project auth-spnego-confluence: Failed to create release: {"message":"Validation Failed","errors":[{"resource":"Release","code":"already_exists","field":"tag_name"}],"documentation_url":"https://developer.github.com/v3/repos/releases/#create-a-release"}: Server returned HTTP response code: 422, message: 'Unprocessable Entity' for URL: https://api.github.com/repos/vaulttec/atlassian-auth-spnego/releases: Server returned HTTP response code: 422 for URL: https://api.github.com/repos/vaulttec/atlassian-auth-spnego/releases -> [Help 1]

As mentioned by @julian-eggers the PR #38 seems to break multi-module builds like the ones in #41 .

tjuerge commented 4 years ago

With a patched version of this plugin (version 1.3.0 with applied PR #43) I was able to perfom a Maven release with 2 artifacts https://github.com/vaulttec/atlassian-auth-spnego/releases/tag/v1.0.0.

jutzig commented 4 years ago

Thanks for the pull request. I'll merge the fix and upload a new release

jutzig commented 4 years ago

1.3.1 is released