Skip to content

Commit b2a2c7b

Browse files
committed
Refine build and release build/build-distribute commands for Git operations.
Release commands now require a tag to operate on. Build commands build the current repository state without resetting the Git state. Closes #15
1 parent 326463d commit b2a2c7b

File tree

4 files changed

+94
-65
lines changed

4 files changed

+94
-65
lines changed

src/main/java/org/springframework/data/release/build/BuildCommands.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.springframework.data.release.CliComponent;
2727
import org.springframework.data.release.TimedCommand;
2828
import org.springframework.data.release.cli.TrainIterationConverter;
29-
import org.springframework.data.release.git.GitOperations;
3029
import org.springframework.data.release.io.Workspace;
3130
import org.springframework.data.release.model.Project;
3231
import org.springframework.data.release.model.Projects;
@@ -49,7 +48,6 @@ class BuildCommands extends TimedCommand {
4948

5049
@NonNull BuildOperations build;
5150
@NonNull Workspace workspace;
52-
@NonNull GitOperations git;
5351
@NonNull Logger logger;
5452

5553
/**
@@ -83,7 +81,6 @@ public void build(@CliOption(key = "", mandatory = true) TrainIteration iteratio
8381
project.ifPresent(it -> build.triggerBuild(iteration.getModule(it)));
8482

8583
if (!project.isPresent()) {
86-
git.prepare(iteration);
8784
iteration.forEach(build::triggerBuild);
8885
}
8986
}
@@ -102,17 +99,14 @@ public void buildDistribute(@CliOption(key = "", mandatory = true) String trainO
10299
TrainIteration.class, null);
103100

104101
Assert.notNull(trainIteration, "TrainIteration must not be null!");
105-
git.prepare(trainIteration);
106102
build.distributeResources(trainIteration);
107103

108104
return;
109105
}
110106

111107
Train train = ReleaseTrains.getTrainByName(trainOrIteration);
112-
113108
Assert.notNull(train, "Train must not be null!");
114109

115-
git.checkout(train);
116110
build.distributeResources(train);
117111
}
118112
}

src/main/java/org/springframework/data/release/build/BuildOperations.java

Lines changed: 68 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import java.util.stream.Collectors;
2626

2727
import org.assertj.core.util.VisibleForTesting;
28-
2928
import org.springframework.data.release.deployment.DeploymentInformation;
3029
import org.springframework.data.release.deployment.StagingRepository;
3130
import org.springframework.data.release.model.Module;
@@ -74,42 +73,77 @@ public void updateProjectDescriptors(TrainIteration iteration, Phase phase) thro
7473
}
7574

7675
/**
77-
* Triggers the distribution builds for all modules participating in the given {@link TrainIteration}.
76+
* Prepares the versions of the given {@link TrainIteration} depending on the given {@link Phase}.
7877
*
7978
* @param iteration must not be {@literal null}.
79+
* @param phase must not be {@literal null}.
8080
*/
81-
public void distributeResources(TrainIteration iteration) {
81+
public void prepareVersions(TrainIteration iteration, Phase phase) {
8282

8383
Assert.notNull(iteration, "Train iteration must not be null!");
84+
Assert.notNull(phase, "Phase must not be null!");
8485

85-
distributeResources(iteration.getTrain());
86+
BuildExecutor.Summary<ModuleIteration> summary = executor.doWithBuildSystemOrdered(iteration,
87+
(system, module) -> system.prepareVersion(module, phase));
88+
89+
logger.log(iteration, "Prepare versions: %s", summary);
8690
}
8791

8892
/**
89-
* Triggers the distribution builds for all modules participating in the given {@link Train}.
93+
* Prepares the version of the given {@link ModuleIteration} depending on the given {@link Phase}.
9094
*
91-
* @param train must not be {@literal null}.
95+
* @param iteration must not be {@literal null}.
96+
* @param phase must not be {@literal null}.
97+
* @return
9298
*/
93-
public void distributeResources(Train train) {
99+
@VisibleForTesting
100+
public ModuleIteration prepareVersion(ModuleIteration iteration, Phase phase) {
94101

95-
Assert.notNull(train, "Train must not be null!");
102+
Assert.notNull(iteration, "Module iteration must not be null!");
103+
Assert.notNull(phase, "Phase must not be null!");
96104

97-
BuildExecutor.Summary<Module> summary = executor.doWithBuildSystemAnyOrder(train,
98-
BuildSystem::triggerDistributionBuild);
105+
return doWithBuildSystem(iteration, (system, module) -> system.prepareVersion(module, phase));
106+
}
99107

100-
logger.log(train, "Distribution build: %s", summary);
108+
109+
/**
110+
* Opens a repository to stage artifacts for this {@link ModuleIteration}.
111+
*
112+
* @param iteration must not be {@literal null}.
113+
*/
114+
public void open(ModuleIteration iteration) {
115+
116+
doWithBuildSystem(iteration, (buildSystem, moduleIteration) -> buildSystem.open());
101117
}
102118

103119
/**
104-
* Triggers the distribution builds for the given module.
120+
* Closes a repository to stage artifacts for this {@link ModuleIteration}.
105121
*
106122
* @param iteration must not be {@literal null}.
123+
* @param stagingRepository must not be {@literal null}.
107124
*/
108-
public void distributeResources(ModuleIteration iteration) {
125+
public void close(ModuleIteration iteration, StagingRepository stagingRepository) {
109126

110-
Assert.notNull(iteration, "ModuleIteration must not be null!");
127+
Assert.notNull(stagingRepository, "StagingRepository must not be null");
128+
Assert.isTrue(stagingRepository.isPresent(), "StagingRepository must be present");
111129

112-
doWithBuildSystem(iteration, BuildSystem::triggerDistributionBuild);
130+
doWithBuildSystem(iteration, (buildSystem, moduleIteration) -> {
131+
buildSystem.close(stagingRepository);
132+
return null;
133+
});
134+
}
135+
136+
/**
137+
* Performs a local build for all modules in the given {@link TrainIteration}.
138+
*
139+
* @param iteration must not be {@literal null}.
140+
* @return
141+
*/
142+
public void build(TrainIteration iteration) {
143+
144+
executor.doWithBuildSystemOrdered(iteration, BuildSystem::triggerBuild);
145+
146+
logger.log(iteration, "Build finished");
113147
}
114148

115149
/**
@@ -149,72 +183,51 @@ public DeploymentInformation performRelease(ModuleIteration module) {
149183
}
150184

151185
/**
152-
* Prepares the versions of the given {@link TrainIteration} depending on the given {@link Phase}.
186+
* Triggers the distribution builds for all modules participating in the given {@link TrainIteration}.
153187
*
154188
* @param iteration must not be {@literal null}.
155-
* @param phase must not be {@literal null}.
156189
*/
157-
public void prepareVersions(TrainIteration iteration, Phase phase) {
190+
public void distributeResources(TrainIteration iteration) {
158191

159192
Assert.notNull(iteration, "Train iteration must not be null!");
160-
Assert.notNull(phase, "Phase must not be null!");
161193

162-
BuildExecutor.Summary<ModuleIteration> summary = executor.doWithBuildSystemOrdered(iteration,
163-
(system, module) -> system.prepareVersion(module, phase));
164-
165-
logger.log(iteration, "Prepare versions: %s", summary);
194+
distributeResources(iteration.getTrain());
166195
}
167196

168197
/**
169-
* Prepares the version of the given {@link ModuleIteration} depending on the given {@link Phase}.
198+
* Triggers the distribution builds for all modules participating in the given {@link Train}.
170199
*
171-
* @param iteration must not be {@literal null}.
172-
* @param phase must not be {@literal null}.
173-
* @return
200+
* @param train must not be {@literal null}.
174201
*/
175-
@VisibleForTesting
176-
public ModuleIteration prepareVersion(ModuleIteration iteration, Phase phase) {
202+
public void distributeResources(Train train) {
177203

178-
Assert.notNull(iteration, "Module iteration must not be null!");
179-
Assert.notNull(phase, "Phase must not be null!");
204+
Assert.notNull(train, "Train must not be null!");
180205

181-
return doWithBuildSystem(iteration, (system, module) -> system.prepareVersion(module, phase));
182-
}
206+
BuildExecutor.Summary<Module> summary = executor.doWithBuildSystemAnyOrder(train,
207+
BuildSystem::triggerDistributionBuild);
183208

184-
/**
185-
* Returns the {@link Path} of the local artifact repository.
186-
*
187-
* @return
188-
*/
189-
public Path getLocalRepository() {
190-
return properties.getLocalRepository().toPath();
209+
logger.log(train, "Distribution build: %s", summary);
191210
}
192211

193212
/**
194-
* Opens a repository to stage artifacts for this {@link ModuleIteration}.
213+
* Triggers the distribution builds for the given module.
195214
*
196215
* @param iteration must not be {@literal null}.
197216
*/
198-
public void open(ModuleIteration iteration) {
217+
public void distributeResources(ModuleIteration iteration) {
199218

200-
doWithBuildSystem(iteration, (buildSystem, moduleIteration) -> buildSystem.open());
219+
Assert.notNull(iteration, "ModuleIteration must not be null!");
220+
221+
doWithBuildSystem(iteration, BuildSystem::triggerDistributionBuild);
201222
}
202223

203224
/**
204-
* Closes a repository to stage artifacts for this {@link ModuleIteration}.
225+
* Returns the {@link Path} of the local artifact repository.
205226
*
206-
* @param iteration must not be {@literal null}.
207-
* @param stagingRepository must not be {@literal null}.
227+
* @return
208228
*/
209-
public void close(ModuleIteration iteration, StagingRepository stagingRepository) {
210-
211-
Assert.notNull(stagingRepository, "StagingRepository must not be null");
212-
Assert.isTrue(stagingRepository.isPresent(), "StagingRepository must be present");
213-
214-
doWithBuildSystem(iteration, (buildSystem, moduleIteration) -> {
215-
buildSystem.close(stagingRepository);
216-
return null;
217-
});
229+
public Path getLocalRepository() {
230+
return properties.getLocalRepository().toPath();
218231
}
219232

220233
/**

src/main/java/org/springframework/data/release/cli/ReleaseCommands.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,26 @@ public String predictTrainAndIteration() {
6767
orElse(null);
6868
}
6969

70+
/**
71+
* Composite command to prepare a release.
72+
*
73+
* @param iteration
74+
* @throws Exception
75+
*/
76+
@CliCommand(value = "prepare-it")
77+
public void prepareIt(@CliOption(key = "", mandatory = true) TrainIteration iteration) throws Exception {
78+
79+
tracker.trackerPrepare(iteration);
80+
81+
prepare(iteration);
82+
83+
build.build(iteration);
84+
85+
conclude(iteration);
86+
87+
gitHub.push(iteration);
88+
}
89+
7090
/**
7191
* Composite command to ship a full release.
7292
*
@@ -80,14 +100,14 @@ public void shipIt(@CliOption(key = "", mandatory = true) TrainIteration iterati
80100

81101
prepare(iteration);
82102

83-
buildRelease(iteration, null);
84-
85103
conclude(iteration);
86104

87-
gitHub.push(iteration);
105+
buildRelease(iteration, null);
88106

89107
distribute(iteration, null);
90108

109+
gitHub.push(iteration);
110+
91111
tracker.closeIteration(iteration);
92112
}
93113

@@ -133,6 +153,8 @@ public void repositoryClose(@CliOption(key = "", mandatory = true) TrainIteratio
133153
public void buildRelease(@CliOption(key = "", mandatory = true) TrainIteration iteration, //
134154
@CliOption(key = "project", mandatory = false) String projectName) {
135155

156+
git.checkout(iteration);
157+
136158
if (!iteration.getIteration().isPublic()) {
137159
deployment.verifyAuthentication();
138160
}

src/main/java/org/springframework/data/release/git/GitOperations.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ public void checkout(Train train, boolean update) {
202202
}
203203

204204
/**
205-
* Checks out all projects of the given {@link TrainIteration}.
205+
* Checks out all projects of the given {@link TrainIteration} using their tags.
206206
*
207207
* @param iteration must not be {@literal null}.
208208
*/

0 commit comments

Comments
 (0)