From e62c76b167fc5f46788d78e685406c110f959dd7 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Thu, 31 Mar 2016 18:45:46 +0200 Subject: [PATCH] #16 - Added Maven Central distribution MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Introduced properties for GPG plugin and forward them to the execution of the release build. Public release versions now trigger the "central" profile being used which will enable the Nexus repository distribution. Renamed GitCommands.checkout(…) to update(…). Made sure that project release build execution now also authenticates with Artifactory beforehand. --- release-tools/application-local.template | 7 +++++++ .../data/release/build/MavenBuildSystem.java | 12 +++++++++++- .../data/release/cli/ReleaseCommands.java | 2 ++ .../release/deployment/DeploymentProperties.java | 7 +++++++ .../data/release/git/GitCommands.java | 2 +- .../src/main/resources/application.properties | 7 ++++++- 6 files changed, 34 insertions(+), 3 deletions(-) diff --git a/release-tools/application-local.template b/release-tools/application-local.template index 57d53ff..33be287 100644 --- a/release-tools/application-local.template +++ b/release-tools/application-local.template @@ -8,4 +8,11 @@ git.password= maven.mavenHome= # Deployment +deployment.repository-prefix= deployment.password= +deployment.api-key= + +# GPG +deployment.gpg.keyname= +deployment.gpg.password= +# deployment.gpg.executable=/usr/local/bin/gpg2 \ No newline at end of file diff --git a/release-tools/src/main/java/org/springframework/data/release/build/MavenBuildSystem.java b/release-tools/src/main/java/org/springframework/data/release/build/MavenBuildSystem.java index c9a4537..c798061 100644 --- a/release-tools/src/main/java/org/springframework/data/release/build/MavenBuildSystem.java +++ b/release-tools/src/main/java/org/springframework/data/release/build/MavenBuildSystem.java @@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import org.springframework.data.release.deployment.DeploymentInformation; import org.springframework.data.release.deployment.DeploymentProperties; +import org.springframework.data.release.deployment.DeploymentProperties.Gpg; import org.springframework.data.release.io.Workspace; import org.springframework.data.release.model.ArtifactVersion; import org.springframework.data.release.model.ModuleIteration; @@ -247,7 +248,7 @@ class MavenBuildSystem implements BuildSystem { List arguments = new ArrayList<>(); arguments.add("clean"); arguments.add("deploy"); - arguments.add("-Pci,release"); + arguments.add("-Pci,release".concat(module.getIteration().isPublic() ? ",central" : "")); arguments.add("-DskipTests"); @@ -258,6 +259,15 @@ class MavenBuildSystem implements BuildSystem { arguments.add("-Dartifactory.build-name=\"".concat(information.getBuildName()).concat("\"")); arguments.add("-Dartifactory.build-number=".concat(information.getBuildNumber())); + if (module.getIteration().isPublic()) { + + Gpg gpg = properties.getGpg(); + + arguments.add("-Dgpg.executable=".concat(gpg.getExecutable())); + arguments.add("-Dgpg.keyname=".concat(gpg.getKeyname())); + arguments.add("-Dgpg.password=".concat(gpg.getPassword())); + } + mvn.execute(module.getProject(), arguments); return information; diff --git a/release-tools/src/main/java/org/springframework/data/release/cli/ReleaseCommands.java b/release-tools/src/main/java/org/springframework/data/release/cli/ReleaseCommands.java index 55c2715..e0b6782 100644 --- a/release-tools/src/main/java/org/springframework/data/release/cli/ReleaseCommands.java +++ b/release-tools/src/main/java/org/springframework/data/release/cli/ReleaseCommands.java @@ -95,6 +95,8 @@ public class ReleaseCommands implements CommandMarker { if (projectName != null) { + deployment.verifyAuthentication(); + Project project = Projects.byName(projectName); ModuleIteration module = iteration.getModule(project); diff --git a/release-tools/src/main/java/org/springframework/data/release/deployment/DeploymentProperties.java b/release-tools/src/main/java/org/springframework/data/release/deployment/DeploymentProperties.java index 0ef5458..e4e00c8 100644 --- a/release-tools/src/main/java/org/springframework/data/release/deployment/DeploymentProperties.java +++ b/release-tools/src/main/java/org/springframework/data/release/deployment/DeploymentProperties.java @@ -57,6 +57,8 @@ public class DeploymentProperties { private String repositoryPrefix = ""; + private Gpg gpg; + public String getStagingRepository() { return repositoryPrefix.concat(stagingRepository); } @@ -105,4 +107,9 @@ public class DeploymentProperties { return URI.create(uri.concat(VERIFICATION_RESOURCE)); } } + + @Data + public static class Gpg { + private String keyname, password, executable; + } } diff --git a/release-tools/src/main/java/org/springframework/data/release/git/GitCommands.java b/release-tools/src/main/java/org/springframework/data/release/git/GitCommands.java index cbfdb81..56ce187 100644 --- a/release-tools/src/main/java/org/springframework/data/release/git/GitCommands.java +++ b/release-tools/src/main/java/org/springframework/data/release/git/GitCommands.java @@ -57,7 +57,7 @@ public class GitCommands implements CommandMarker { } @CliCommand("git update") - public void checkout(@CliOption(key = { "", "train" }, mandatory = true) String trainName) + public void update(@CliOption(key = { "", "train" }, mandatory = true) String trainName) throws Exception, InterruptedException { git.update(ReleaseTrains.getTrainByName(trainName)); } diff --git a/release-tools/src/main/resources/application.properties b/release-tools/src/main/resources/application.properties index 2ef0c37..08e8d40 100644 --- a/release-tools/src/main/resources/application.properties +++ b/release-tools/src/main/resources/application.properties @@ -7,4 +7,9 @@ maven.plugins.versions=org.codehaus.mojo:versions-maven-plugin:2.2 deployment.server.uri=https://repo.spring.io deployment.staging-repository=libs-staging-local deployment.username=buildmaster -#deployment.password <- local \ No newline at end of file +#deployment.password <- local + +# GPG setup +deployment.gpg.executable=/usr/local/bin/gpg2 +# deployment.gpg.keyname +# deployment.gpg.password \ No newline at end of file