#113 - Deployment promotion is now skipped for public artifacts.

As we publish public artifacts (i.e. GA and service releases) directly to Maven Central, there's no need for the promotion step and it currently produces error output (fortunately not breaking the build). With this commit in place, this is now changed to simply skip that step and print informative output.
This commit is contained in:
Oliver Drotbohm
2019-04-02 12:38:47 +02:00
parent 1d729ac5f4
commit ea9c4f2130
16 changed files with 169 additions and 72 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2014 the original author or authors.
* Copyright 2014-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,6 +22,7 @@ import org.junit.Test;
import org.springframework.data.release.build.MavenArtifact;
import org.springframework.data.release.model.ArtifactVersion;
import org.springframework.data.release.model.Iteration;
import org.springframework.data.release.model.Projects;
import org.springframework.data.release.model.ReleaseTrains;
/**
@@ -32,7 +33,7 @@ public class ArtifactUnitTests {
@Test
public void testname() {
MavenArtifact artifact = new MavenArtifact(ReleaseTrains.DIJKSTRA.getModuleIteration(Iteration.M1, "JPA"));
MavenArtifact artifact = new MavenArtifact(ReleaseTrains.DIJKSTRA.getModuleIteration(Projects.JPA, Iteration.M1));
assertThat(artifact.getArtifactId(), is("spring-data-jpa"));
assertThat(artifact.getVersion(), is(ArtifactVersion.of("1.6.0.M1")));

View File

@@ -24,6 +24,7 @@ import org.springframework.data.release.git.GitOperations;
import org.springframework.data.release.model.Iteration;
import org.springframework.data.release.model.ModuleIteration;
import org.springframework.data.release.model.Phase;
import org.springframework.data.release.model.Projects;
import org.springframework.data.release.model.ReleaseTrains;
import org.springframework.data.release.model.Train;
@@ -42,7 +43,7 @@ public class DeploymentOperationsIntegrationTests extends AbstractIntegrationTes
public void testname() {
Train train = ReleaseTrains.HOPPER;
ModuleIteration buildModule = train.getModuleIteration(Iteration.M1, "build");
ModuleIteration buildModule = train.getModuleIteration(Projects.BUILD, Iteration.M1);
git.update(train);
build.prepareVersion(buildModule, Phase.PREPARE);

View File

@@ -0,0 +1,51 @@
/*
* Copyright 2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.data.release.deployment;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;
import org.junit.Test;
import org.springframework.data.release.model.Iteration;
import org.springframework.data.release.model.ModuleIteration;
import org.springframework.data.release.model.Projects;
import org.springframework.data.release.model.ReleaseTrains;
import org.springframework.data.release.utils.Logger;
/**
* Unit tests for {@link DeploymentOperations}.
*
* @author Oliver Drotbohm
*/
public class DeploymentOperationsUnitTests {
@Test // #113
public void skipsPromotionForPublicArtifacts() {
Logger logger = mock(Logger.class);
ArtifactoryClient client = mock(ArtifactoryClient.class);
DeploymentOperations operations = new DeploymentOperations(client, logger);
ModuleIteration module = ReleaseTrains.MOORE.getModuleIteration(Projects.COMMONS, Iteration.GA);
DefaultDeploymentInformation information = new DefaultDeploymentInformation(module, new DeploymentProperties());
operations.promote(information);
verify(logger).log(eq(module), any());
verifyZeroInteractions(client);
}
}

View File

@@ -21,12 +21,13 @@ import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.data.release.model.Module;
import org.springframework.data.release.model.Project;
import org.springframework.data.release.model.Projects;
import org.springframework.data.release.model.ReleaseTrains;
import org.springframework.data.release.model.Train;
/**
* Unit tests for {@link GitProject}.
*
*
* @author Oliver Gierke
*/
public class GitProjectUnitTests {
@@ -36,7 +37,7 @@ public class GitProjectUnitTests {
Train codd = ReleaseTrains.CODD;
GitServer server = new GitServer();
Module module = codd.getModule("Commons");
Module module = codd.getModule(Projects.COMMONS);
Project project = module.getProject();
GitProject gitProject = new GitProject(project, server);

View File

@@ -55,8 +55,8 @@ public class GitHubIssueTrackerIntegrationTests extends AbstractIntegrationTests
public static final String ISSUES_URI = "/repos/spring-projects/spring-data-build/issues";
public static final String RELEASE_TICKET_URI = "/repos/spring-projects/spring-data-build/issues/233";
public static final String MILESTONES_URI = "/repos/spring-projects/spring-data-build/milestones";
public static final ModuleIteration BUILD_HOPPER_RC1 = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1,
"Build");
public static final ModuleIteration BUILD_HOPPER_RC1 = ReleaseTrains.HOPPER.getModuleIteration(Projects.BUILD,
Iteration.RC1);
@Rule public WireMockRule mockService = new WireMockRule(
wireMockConfig().port(8888).fileSource(new ClasspathFileSource("integration/github")));
@@ -189,7 +189,7 @@ public class GitHubIssueTrackerIntegrationTests extends AbstractIntegrationTests
expectedException.expect(IllegalStateException.class);
expectedException.expectMessage("No milestone for Spring Data Build found containing 1.8 RC1!");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1, "Build");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Projects.BUILD, Iteration.RC1);
mockGetIssuesWith("emptyIssues.json");
mockGetMilestonesWith("emptyMilestones.json");

View File

@@ -19,9 +19,9 @@ import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.data.release.issues.github.GithubMilestone;
import org.springframework.data.release.model.Iteration;
import org.springframework.data.release.model.ModuleIteration;
import org.springframework.data.release.model.Projects;
import org.springframework.data.release.model.ReleaseTrains;
/**
@@ -47,7 +47,7 @@ public class GithubMilestoneUnitTests {
@Test
public void usesCustomModuleIterationStartVersion() {
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Iteration.M1, "Elasticsearch");
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Projects.ELASTICSEARCH, Iteration.M1);
GithubMilestone version = new GithubMilestone(module);
assertThat(version.toString(), is("1.0 M1 (Dijkstra)"));
@@ -56,7 +56,7 @@ public class GithubMilestoneUnitTests {
@Test
public void doesNotUseCustomIterationOnNonFirstiterations() {
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Iteration.RC1, "Elasticsearch");
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Projects.ELASTICSEARCH, Iteration.RC1);
GithubMilestone version = new GithubMilestone(module);
assertThat(version.toString(), is("1.0 RC1 (Dijkstra)"));
@@ -65,7 +65,7 @@ public class GithubMilestoneUnitTests {
@Test
public void rendersDescriptionCorrectly() {
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Iteration.M1, "Elasticsearch");
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Projects.ELASTICSEARCH, Iteration.M1);
GithubMilestone version = new GithubMilestone(module);
assertThat(version.getDescription(), is("Dijkstra M2"));
@@ -73,7 +73,7 @@ public class GithubMilestoneUnitTests {
private void assertIterationVersion(Iteration iteration, String expected) {
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(iteration, "Commons");
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Projects.COMMONS, iteration);
GithubMilestone version = new GithubMilestone(module);
assertThat(version.toString(), is(expected));

View File

@@ -60,7 +60,7 @@ public class JiraConnectorIntegrationTests extends AbstractIntegrationTests {
static final String SEARCH_URI = "/rest/api/2/search";
static final String PROJECT_VERSION_URI = "/rest/api/2/project/%s/version";
static final String PROJECT_COMPONENTS_URI = "/rest/api/2/project/%s/components";
static final ModuleIteration REST_HOPPER_RC1 = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1, "REST");
static final ModuleIteration REST_HOPPER_RC1 = ReleaseTrains.HOPPER.getModuleIteration(Projects.REST, Iteration.RC1);
@Rule public WireMockRule mockService = new WireMockRule(
wireMockConfig().port(8888).fileSource(new ClasspathFileSource("integration/jira")));
@@ -177,7 +177,7 @@ public class JiraConnectorIntegrationTests extends AbstractIntegrationTests {
@Test
public void createReleaseVersionShouldFindExistingReleaseVersion() throws Exception {
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1, "REST");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Projects.REST, Iteration.RC1);
mockGetProjectVersionsWith("releaseVersions.json", moduleIteration.getProjectKey());
@@ -192,7 +192,7 @@ public class JiraConnectorIntegrationTests extends AbstractIntegrationTests {
@Test
public void archiveReleaseVersionShouldArchiveReleaseVersion() throws Exception {
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1, "REST");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Projects.REST, Iteration.RC1);
mockGetProjectVersionsWith("releaseVersions.json", moduleIteration.getProjectKey());
mockService.stubFor(put(urlPathMatching(UPDATE_VERSION_URI)).//
@@ -211,7 +211,7 @@ public class JiraConnectorIntegrationTests extends AbstractIntegrationTests {
@Test
public void createReleaseTicketShouldCreateReleaseTicket() throws Exception {
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1, "REST");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Projects.REST, Iteration.RC1);
mockGetProjectVersionsWith("releaseVersions.json", moduleIteration.getProjectKey());
mockGetProjectComponentsWith("projectComponents.json", moduleIteration.getProjectKey());
@@ -233,7 +233,7 @@ public class JiraConnectorIntegrationTests extends AbstractIntegrationTests {
@Test
public void createReleaseTicketShouldCreateReleaseTicketWithoutComponent() throws Exception {
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1, "REST");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Projects.REST, Iteration.RC1);
mockGetProjectVersionsWith("releaseVersions.json", moduleIteration.getProjectKey());
mockGetProjectComponentsWith("emptyProjectComponents.json", moduleIteration.getProjectKey());
@@ -257,7 +257,7 @@ public class JiraConnectorIntegrationTests extends AbstractIntegrationTests {
expectedException.expect(IllegalStateException.class);
expectedException.expectMessage("Did not find a release version for Spring Data REST 2.5 RC1");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1, "REST");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Projects.REST, Iteration.RC1);
mockSearchWith("emptyTickets.json");
mockGetProjectVersionsWith("emptyReleaseVersions.json", moduleIteration.getProjectKey());
@@ -273,7 +273,7 @@ public class JiraConnectorIntegrationTests extends AbstractIntegrationTests {
@Test
public void createReleaseTicketShouldFindExistingTicket() throws Exception {
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1, "REST");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Projects.REST, Iteration.RC1);
mockGetProjectVersionsWith("releaseVersions.json", moduleIteration.getProjectKey());
mockGetProjectComponentsWith("projectComponents.json", moduleIteration.getProjectKey());
@@ -327,7 +327,7 @@ public class JiraConnectorIntegrationTests extends AbstractIntegrationTests {
@Test
public void closeIterationShouldResolveReleaseTicket() {
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Iteration.RC1, "REST");
ModuleIteration moduleIteration = ReleaseTrains.HOPPER.getModuleIteration(Projects.REST, Iteration.RC1);
properties.setUsername("mp911de");

View File

@@ -19,9 +19,9 @@ import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.data.release.issues.jira.JiraVersion;
import org.springframework.data.release.model.Iteration;
import org.springframework.data.release.model.ModuleIteration;
import org.springframework.data.release.model.Projects;
import org.springframework.data.release.model.ReleaseTrains;
/**
@@ -47,7 +47,7 @@ public class JiraVersionUnitTests {
@Test
public void usesCustomModuleIterationStartVersion() {
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Iteration.M1, "Elasticsearch");
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Projects.ELASTICSEARCH, Iteration.M1);
JiraVersion version = new JiraVersion(module);
assertThat(version.toString(), is("1.0 M1 (Dijkstra)"));
@@ -56,7 +56,7 @@ public class JiraVersionUnitTests {
@Test
public void doesNotUseCustomIterationOnNonFirstiterations() {
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Iteration.RC1, "Elasticsearch");
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Projects.ELASTICSEARCH, Iteration.RC1);
JiraVersion version = new JiraVersion(module);
assertThat(version.toString(), is("1.0 RC1 (Dijkstra)"));
@@ -65,7 +65,7 @@ public class JiraVersionUnitTests {
@Test
public void rendersDescriptionCorrectly() {
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Iteration.M1, "Elasticsearch");
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Projects.ELASTICSEARCH, Iteration.M1);
JiraVersion version = new JiraVersion(module);
assertThat(version.getDescription(), is("Dijkstra M2"));
@@ -73,7 +73,7 @@ public class JiraVersionUnitTests {
private void assertIterationVersion(Iteration iteration, String expected) {
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(iteration, "Commons");
ModuleIteration module = ReleaseTrains.DIJKSTRA.getModuleIteration(Projects.COMMONS, iteration);
JiraVersion version = new JiraVersion(module);
assertThat(version.toString(), is(expected));

View File

@@ -26,11 +26,12 @@ import org.junit.Test;
import org.springframework.data.release.issues.Ticket;
import org.springframework.data.release.issues.Tickets;
import org.springframework.data.release.model.Iteration;
import org.springframework.data.release.model.Projects;
import org.springframework.data.release.model.ReleaseTrains;
/**
* Unit tests for {@link Tickets}.
*
*
* @author Mark Paluch
*/
public class TicketsUnitTests {
@@ -41,7 +42,7 @@ public class TicketsUnitTests {
Ticket ticket = new Ticket("1234", "Release 1.10 GA (Hopper)", JiraTicketStatus.of(false, "", ""));
Tickets tickets = new Tickets(Collections.singletonList(ticket));
boolean result = tickets.hasReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Iteration.GA, "JPA"));
boolean result = tickets.hasReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Projects.JPA, Iteration.GA));
assertThat(result, is(true));
}
@@ -51,7 +52,7 @@ public class TicketsUnitTests {
Ticket ticket = new Ticket("1234", "Release 1.10 GA", JiraTicketStatus.of(false, "", ""));
Tickets tickets = new Tickets(Collections.singletonList(ticket));
boolean result = tickets.hasReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Iteration.GA, "JPA"));
boolean result = tickets.hasReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Projects.JPA, Iteration.GA));
assertThat(result, is(false));
}
@@ -61,7 +62,8 @@ public class TicketsUnitTests {
Ticket ticket = new Ticket("1234", "Release 1.10 GA (Hopper)", JiraTicketStatus.of(false, "", ""));
Tickets tickets = new Tickets(Collections.singletonList(ticket));
Ticket releaseTicket = tickets.getReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Iteration.GA, "JPA"));
Ticket releaseTicket = tickets
.getReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Projects.JPA, Iteration.GA));
assertThat(releaseTicket, is(ticket));
}
@@ -71,7 +73,7 @@ public class TicketsUnitTests {
Ticket ticket = new Ticket("1234", "Release 1.10 GA", JiraTicketStatus.of(false, "", ""));
Tickets tickets = new Tickets(Collections.singletonList(ticket));
tickets.getReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Iteration.GA, "JPA"));
tickets.getReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Projects.JPA, Iteration.GA));
fail("Missing IllegalStateException");
}
@@ -81,7 +83,8 @@ public class TicketsUnitTests {
Ticket ticket = new Ticket("1234", "Release 1.10 GA (Hopper)", JiraTicketStatus.of(true, "", ""));
Tickets tickets = new Tickets(Collections.singletonList(ticket));
Ticket releaseTicket = tickets.getReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Iteration.GA, "JPA"));
Ticket releaseTicket = tickets
.getReleaseTicket(ReleaseTrains.HOPPER.getModuleIteration(Projects.JPA, Iteration.GA));
assertThat(releaseTicket, is(ticket));
}
@@ -92,7 +95,7 @@ public class TicketsUnitTests {
Tickets tickets = new Tickets(Collections.singletonList(ticket));
Tickets result = tickets
.getReleaseTickets(ReleaseTrains.HOPPER.getModuleIteration(Iteration.GA, "JPA").getTrainIteration());
.getReleaseTickets(ReleaseTrains.HOPPER.getModuleIteration(Projects.JPA, Iteration.GA).getTrainIteration());
assertThat(result.getTickets().contains(ticket), is(true));
}
}