Skip to content

Commit 12b414f

Browse files
authored
Merge pull request #81 from gdgib/G2-1865-PreserveTemp
G2-1865 Preserve bulldozer temp files during release process
2 parents 83795f5 + 9689be5 commit 12b414f

File tree

3 files changed

+43
-14
lines changed

3 files changed

+43
-14
lines changed

bd-build/src/main/java/com/g2forge/bulldozer/build/Release.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ public IExit invoke() throws Throwable {
257257
switchToBranch(git);
258258
// Commit any changes from a past prepare
259259
commitUpstreamReversion(git);
260+
project.preserveTemp();
260261

261262
// Prepare the project (stream stdio to the console)
262263
getContext().getMaven().releasePrepare(project.getDirectory(), releaseProperties.getTag(), releaseProperties.getRelease(), releaseProperties.getDevelopment(), IMaven.PROFILES_RELEASE);
@@ -282,7 +283,7 @@ public IExit invoke() throws Throwable {
282283
try {
283284
// Skip ourselves & projects that don't depend on us
284285
if ((downstream == project) || !downstream.getDependencies().getTransitive().keySet().contains(name)) continue;
285-
log.info("\tFound downstream{}", downstream.getName());
286+
log.info("\tFound downstream {}", downstream.getName());
286287
// Record that we're updating this project so it needs to be re-installed at the end
287288
unreleasedProjectsToReinstall.add(downstream.getName());
288289
// Update all the downstreams to new release versions
@@ -352,6 +353,7 @@ public IExit invoke() throws Throwable {
352353
// Commit anything dirty, since those are the things with version updates
353354
switchToBranch(project.getGit());
354355
commitUpstreamReversion(project.getGit());
356+
project.preserveTemp();
355357
}
356358

357359
// Re-install all the downstream projects that have had updated upstreams

bd-build/src/main/java/com/g2forge/bulldozer/build/model/BulldozerProject.java

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,14 @@ public void close() {
103103
HIO.closeAll(getCloseables());
104104
}
105105

106+
protected String computeCommit() {
107+
try {
108+
return getGit().getRepository().findRef(Constants.HEAD).getObjectId().getName();
109+
} catch (IOException exception) {
110+
throw new RuntimeIOException(String.format("Failed to determine commit for %1$s!", getName()), exception);
111+
}
112+
}
113+
106114
protected BulldozerDependencies computeDependencies() {
107115
final Map<String, ? extends BulldozerProject> nameToProject = getContext().getNameToProject();
108116
final Map<String, ? extends BulldozerProject> groupToProject = getContext().getGroupToProject();
@@ -190,28 +198,20 @@ public String getName() {
190198
}
191199

192200
public <T> T loadTemp(IFunction1<BulldozerTemp, T> getter, IConsumer2<BulldozerTemp, T> setter, ISupplier<T> generator) {
193-
final String commit;
194-
try {
195-
commit = getGit().getRepository().findRef(Constants.HEAD).getObjectId().getName();
196-
} catch (IOException exception) {
197-
throw new RuntimeIOException(String.format("Failed to determine commit for %1$s!", getName()), exception);
198-
}
201+
final String commit = computeCommit();
199202

200203
final Path path = getDirectory().resolve(BulldozerTemp.BULLDOZER_TEMP);
201204
BulldozerTemp temp = null;
202205
if (Files.exists(path)) {
203206
try {
204207
final BulldozerTemp read = getContext().getObjectMapper().readValue(path.toFile(), BulldozerTemp.class);
205-
if (read.getKey().equals(commit)) temp = read;
208+
if (read.isValidForCommit(commit)) temp = read;
206209
else Files.delete(path);
207210
} catch (IOException exception) {
208211
log.warn(String.format("Failed to read bulldozer temp data for %1$s, will regenerate...", getName()));
209212
}
210213
}
211-
if (temp == null) {
212-
temp = new BulldozerTemp();
213-
temp.setKey(commit);
214-
}
214+
if (temp == null) temp = BulldozerTemp.builder().commit(commit).build();
215215
final T retVal0 = getter.apply(temp);
216216
if (retVal0 != null) return retVal0;
217217

@@ -229,4 +229,21 @@ public <T> T loadTemp(IFunction1<BulldozerTemp, T> getter, IConsumer2<BulldozerT
229229
}
230230
return retVal1;
231231
}
232+
233+
public void preserveTemp() {
234+
final String commit = computeCommit();
235+
236+
final Path path = getDirectory().resolve(BulldozerTemp.BULLDOZER_TEMP);
237+
if (Files.exists(path)) {
238+
try {
239+
final BulldozerTemp read = getContext().getObjectMapper().readValue(path.toFile(), BulldozerTemp.class);
240+
if (!read.isValidForCommit(commit)) {
241+
final BulldozerTemp write = read.toBuilder().otherCommit(commit).build();
242+
getContext().getObjectMapper().writeValue(path.toFile(), write);
243+
}
244+
} catch (IOException exception) {
245+
log.warn(String.format("Failed to preserve bulldozer temp data for %1$s, will regenerate later...", getName()));
246+
}
247+
}
248+
}
232249
}
Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,24 @@
11
package com.g2forge.bulldozer.build.model;
22

3+
import java.util.List;
4+
35
import lombok.AllArgsConstructor;
46
import lombok.Builder;
57
import lombok.Data;
68
import lombok.RequiredArgsConstructor;
9+
import lombok.Singular;
710

811
@Data
9-
@Builder
12+
@Builder(toBuilder = true)
1013
@AllArgsConstructor
1114
@RequiredArgsConstructor
1215
public class BulldozerTemp {
1316
public static final String BULLDOZER_TEMP = "bulldozer-temp.json";
1417

15-
protected String key;
18+
protected String commit;
19+
20+
@Singular
21+
protected List<String> otherCommits;
1622

1723
protected String group;
1824

@@ -21,4 +27,8 @@ public class BulldozerTemp {
2127
protected BulldozerDependencies dependencies;
2228

2329
protected String parentGroup;
30+
31+
public boolean isValidForCommit(String commit) {
32+
return getCommit().equals(commit) || ((getOtherCommits() != null) && getOtherCommits().contains(commit));
33+
}
2434
}

0 commit comments

Comments
 (0)