#32 - Allow enforcing to build milestone releases on a branch.

Train has now a method withAlwaysUseBranch(…) to define that milestone releases are supposed to be build from a branch, too.

Introduced Kay release train using that new flag and setting up a customized Iteration chain including a second milestone.
This commit is contained in:
Oliver Gierke
2016-11-24 15:22:21 +01:00
parent 1180b480ff
commit dbf7b26261
7 changed files with 41 additions and 17 deletions

View File

@@ -48,7 +48,7 @@ public class Branch implements Comparable<Branch> {
Assert.notNull(iterationVersion, "Iteration version must not be null!");
if (iterationVersion.isServiceIteration()) {
if (iterationVersion.isBranchVersion()) {
return from((VersionAware) iterationVersion);
}
@@ -63,6 +63,12 @@ public class Branch implements Comparable<Branch> {
return from(version.toString().concat(".x"));
}
/**
* Creates a new {@link Branch} from the given name. Uses the local part of it only.
*
* @param name must not be {@literal null} or empty.
* @return
*/
public static Branch from(String name) {
int slashIndex = name.lastIndexOf('/');
@@ -95,6 +101,10 @@ public class Branch implements Comparable<Branch> {
return name;
}
/*
* (non-Javadoc)
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(Branch o) {
return name.compareToIgnoreCase(o.name);

View File

@@ -28,8 +28,9 @@ import org.springframework.util.Assert;
@Value
public class Iteration {
public static final Iteration SR6 = new Iteration("SR6", null);
public static final Iteration SR5 = new Iteration("SR6", SR6);
public static final Iteration SR7 = new Iteration("SR7", null);
public static final Iteration SR6 = new Iteration("SR6", SR7);
public static final Iteration SR5 = new Iteration("SR5", SR6);
public static final Iteration SR4 = new Iteration("SR4", SR5);
public static final Iteration SR3 = new Iteration("SR3", SR4);
public static final Iteration SR2 = new Iteration("SR2", SR3);

View File

@@ -24,5 +24,5 @@ public interface IterationVersion extends VersionAware {
Iteration getIteration();
boolean isServiceIteration();
boolean isBranchVersion();
}

View File

@@ -65,11 +65,11 @@ public class ModuleIteration implements IterationVersion {
/*
* (non-Javadoc)
* @see org.springframework.data.release.model.IterationVersion#isServiceIteration()
* @see org.springframework.data.release.model.IterationVersion#isBranchVersion()
*/
@Override
public boolean isServiceIteration() {
return getIteration().isServiceIteration();
public boolean isBranchVersion() {
return getIteration().isServiceIteration() || trainIteration.getTrain().isAlwaysUseBranch();
}
/**

View File

@@ -15,19 +15,22 @@
*/
package org.springframework.data.release.model;
import static org.springframework.data.release.model.Iteration.*;
import static org.springframework.data.release.model.Projects.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.data.release.model.Train.Iterations;
/**
* @author Oliver Gierke
*/
public class ReleaseTrains {
public static final List<Train> TRAINS;
public static final Train CODD, DIJKSTRA, EVANS, FOWLER, GOSLING, HOPPER, INGALLS;
public static final Train CODD, DIJKSTRA, EVANS, FOWLER, GOSLING, HOPPER, INGALLS, KAY;
static {
@@ -40,9 +43,17 @@ public class ReleaseTrains {
new Module(NEO4J, "4.1"), new Module(COUCHBASE, "2.1"), new Module(ELASTICSEARCH, "2.0"));
INGALLS = HOPPER.next("Ingalls", Transition.MINOR);
Iteration M2 = new Iteration("M2", RC1);
Iterations iterations = new Iterations(new Iteration("M1", M2), M2, RC1, GA, SR1, SR2, SR3, SR4, SR5, SR6, SR7);
KAY = INGALLS.next("Kay", Transition.MAJOR)//
.withAlwaysUseBranch(true)//
.withIterations(iterations);
// Trains
TRAINS = Arrays.asList(CODD, DIJKSTRA, EVANS, FOWLER, GOSLING, HOPPER, INGALLS);
TRAINS = Arrays.asList(CODD, DIJKSTRA, EVANS, FOWLER, GOSLING, HOPPER, INGALLS, KAY);
// Train names

View File

@@ -17,9 +17,12 @@ package org.springframework.data.release.model;
import static org.springframework.data.release.model.Iteration.*;
import lombok.AccessLevel;
import lombok.EqualsAndHashCode;
import lombok.RequiredArgsConstructor;
import lombok.ToString;
import lombok.Value;
import lombok.experimental.Wither;
import java.util.Arrays;
import java.util.Collection;
@@ -38,21 +41,20 @@ import org.springframework.util.Assert;
* @author Oliver Gierke
*/
@Value
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public class Train implements Streamable<Module> {
private final String name;;
private final Modules modules;
private final Iterations iterations;
private @Wither Iterations iterations;
private @Wither boolean alwaysUseBranch;
public Train(String name, Module... modules) {
this(name, Arrays.asList(modules));
}
public Train(String name, Collection<Module> modules) {
this.name = name;
this.modules = Modules.of(modules);
this.iterations = Iterations.DEFAULT;
this(name, Modules.of(modules), Iterations.DEFAULT, false);
}
/*
@@ -182,7 +184,7 @@ public class Train implements Streamable<Module> {
@ToString
public static class Iterations implements Iterable<Iteration> {
public static Iterations DEFAULT = new Iterations(M1, RC1, GA, SR1, SR2, SR3, SR4, SR5, SR6);
public static Iterations DEFAULT = new Iterations(M1, RC1, GA, SR1, SR2, SR3, SR4, SR5, SR6, SR7);
private final List<Iteration> iterations;

View File

@@ -25,10 +25,10 @@ public class SimpleIterationVersion implements IterationVersion {
/*
* (non-Javadoc)
* @see org.springframework.data.release.model.IterationVersion#isServiceIteration()
* @see org.springframework.data.release.model.IterationVersion#isBranchVersion()
*/
@Override
public boolean isServiceIteration() {
public boolean isBranchVersion() {
return iteration.isServiceIteration();
}
}