maven repository on DigitalOcean spaces - any luck?

December 30, 2017 2.2k views
DigitalOcean Development

Gradle 2.4 introduced S3 support: http://ryanharter.com/blog/2015/06/18/hosting-a-private-maven-repo-on-amazon-s3/ , https://vtorosyan.github.io/gradle-s3-private-repo/

DigitalOcean Spaces says it support s3 protocol.

But, looks like it is not drop-in replacement: after re-pointing s3 mvn repo url to DO spaces URL it is not working.

I created folder "if-mvn", created key and secret, and trying to publish artefact to s3://if-mvn.nyc3.digitaloceanspaces.com/maven2

Got error:

Execution failed for task ':myApp:publishFatJarPublicationToMyRepository'.

Failed to publish publication 'fatJar' to repository 'My'
Could not get resource 's3://if-mvn.nyc3.digitaloceanspaces.com/maven2/com/my/app/0.0.1.BUILD-SNAPSHOT/maven-metadata.xml'.
The AWS Access Key Id you provided does not exist in our records. (Service: Amazon S3; Status Code: 403; Error Code: InvalidAccessKeyId; Request ID: FB0B6D0F712B59E4)

Unfortunately, DigitalOcean support were unable to explain (Ticket #711785) what's exactly wrong with Request ID: FB0B6D0F712B59E4

2 Answers

I have been trying to do the same. After half a day of trying... I found this very interesting discussion -> https://github.com/gradle/gradle/issues/1464. And here the author mentions a property that you need to set "-Dorg.gradle.s3.endpoint=https://nyc3.digitaloceanspaces.com".

publishing {
    repositories {
        maven {
            url "s3://if-mvn"
            credentials(AwsCredentials) {
                accessKey "access"
                secretKey "secret"
            }
        }
    }
}

Long story short: the url you set in publishing.repositories.maven is actually the bucket.

Are you able to change the S3 API signature? Try versions 2 and 4 and see if you have any success.

Have another answer? Share your knowledge.