4

I am trying to publish an RPM artifact from our project into a Yum Repo on Nexus via Gradle:

publishing {
    repositories {
        ivy {
            url 'http://myrepo:8081/repository/myproject'
            credentials {
                username "aaa"
                password "xxx"
            }
            layout "pattern", {
                artifact "${buildRpm.outputs.getFiles().getSingleFile().getName()}"
            }
        }

        publications {
            rpm(IvyPublication) {
                artifact buildRpm.outputs.getFiles().getSingleFile()
            }
        }
    }
}

When I run ./gradlew publish this task gets picked up and starts to upload the main .rpm artifact of 90MB. It then fails after this with the following error:

> Task :search:publishRpmPublicationToIvyRepository FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':search:publishRpmPublicationToIvyRepository'.
> Failed to publish publication 'rpm' to repository 'ivy'
   > Could not write to resource 'http://myrepo/repository/myproject/myproject-1.23.4.noarch.rpm.sha1'.
      > Could not PUT 'http://myrepo/repository/myproject/myproject-1.23.4.noarch.rpm.sha1'. Received status code 400 from server: Invalid path for a Yum repository

How can I prevent the .sha1 file to be uploaded? I only want the RPM to be uploaded (which is apparently the only thing allowed on this repo).

I also tried using maven-publish instead of ivy-publish but both give similar issues. maven-publish tries to upload a .pom with a similar failure.

I am able to upload the RPM fine manually using curl, but I would rather do it using Gradle plugins and standards.

ChrisDekker
  • 1,584
  • 18
  • 39

0 Answers0