Skip to content

Commit 73dda2e

Browse files
committed
Fix Antora for Milestone & RC
- Verify Antora display_version - Run workflow for tags - Allow run workflow manually Issue gh-10765
1 parent a537b63 commit 73dda2e

File tree

4 files changed

+40
-3
lines changed

4 files changed

+40
-3
lines changed

.github/workflows/antora-generate.yml

+2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
name: Generate Antora Files and Request Build
22

33
on:
4+
workflow_dispatch:
45
push:
56
branches-ignore:
67
- 'gh-pages'
8+
tags: '**'
79

810
env:
911
GH_ACTIONS_REPO_TOKEN: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}

buildSrc/src/main/java/org/springframework/gradle/antora/CheckAntoraVersionPlugin.java

+9
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public void execute(CheckAntoraVersionTask antoraCheckVersion) {
2020
antoraCheckVersion.setDescription("Checks the antora.yml version properties match the Gradle version");
2121
antoraCheckVersion.getAntoraVersion().convention(project.provider(() -> getDefaultAntoraVersion(project)));
2222
antoraCheckVersion.getAntoraPrerelease().convention(project.provider(() -> getDefaultAntoraPrerelease(project)));
23+
antoraCheckVersion.getAntoraDisplayVersion().convention(project.provider(() -> getDefaultAntoraDisplayVersion(project)));
2324
antoraCheckVersion.getAntoraYmlFile().fileProvider(project.provider(() -> project.file("antora.yml")));
2425
}
2526
});
@@ -54,6 +55,14 @@ private static String getDefaultAntoraPrerelease(Project project) {
5455
return null;
5556
}
5657

58+
private static String getDefaultAntoraDisplayVersion(Project project) {
59+
String projectVersion = getProjectVersion(project);
60+
if (!isSnapshot(projectVersion) && isPreRelease(projectVersion)) {
61+
return getDefaultAntoraVersion(project);
62+
}
63+
return null;
64+
}
65+
5766
private static String getProjectVersion(Project project) {
5867
Object projectVersion = project.getVersion();
5968
if (projectVersion == null) {

buildSrc/src/main/java/org/springframework/gradle/antora/CheckAntoraVersionTask.java

+22-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public void check() throws FileNotFoundException {
2222
File antoraYmlFile = getAntoraYmlFile().getAsFile().get();
2323
String expectedAntoraVersion = getAntoraVersion().get();
2424
String expectedAntoraPrerelease = getAntoraPrerelease().getOrElse(null);
25+
String expectedAntoraDisplayVersion = getAntoraDisplayVersion().getOrElse(null);
2526

2627
Representer representer = new Representer();
2728
representer.getPropertyUtils().setSkipMissingProperties(true);
@@ -32,10 +33,17 @@ public void check() throws FileNotFoundException {
3233
String actualAntoraPrerelease = antoraYml.getPrerelease();
3334
boolean preReleaseMatches = antoraYml.getPrerelease() == null && expectedAntoraPrerelease == null ||
3435
(actualAntoraPrerelease != null && actualAntoraPrerelease.equals(expectedAntoraPrerelease));
36+
String actualAntoraDisplayVersion = antoraYml.getDisplay_version();
37+
boolean displayVersionMatches = antoraYml.getDisplay_version() == null && expectedAntoraDisplayVersion == null ||
38+
(actualAntoraDisplayVersion != null && actualAntoraDisplayVersion.equals(expectedAntoraDisplayVersion));
3539
String actualAntoraVersion = antoraYml.getVersion();
3640
if (!preReleaseMatches ||
41+
!displayVersionMatches ||
3742
!expectedAntoraVersion.equals(actualAntoraVersion)) {
38-
throw new GradleException("The Gradle version of '" + getProject().getVersion() + "' should have version: '" + expectedAntoraVersion + "' and prerelease: '" + expectedAntoraPrerelease + "' defined in " + antoraYmlFile + " but got version: '" + actualAntoraVersion+"' and prerelease: '" + actualAntoraPrerelease + "'");
43+
throw new GradleException("The Gradle version of '" + getProject().getVersion() + "' should have version: '"
44+
+ expectedAntoraVersion + "' prerelease: '" + expectedAntoraPrerelease + "' display_version: '"
45+
+ expectedAntoraDisplayVersion + "' defined in " + antoraYmlFile + " but got version: '"
46+
+ actualAntoraVersion + "' prerelease: '" + actualAntoraPrerelease + "' display_version: '" + actualAntoraDisplayVersion + "'");
3947
}
4048
}
4149

@@ -48,11 +56,16 @@ public void check() throws FileNotFoundException {
4856
@Input
4957
public abstract Property<String> getAntoraPrerelease();
5058

59+
@Input
60+
public abstract Property<String> getAntoraDisplayVersion();
61+
5162
public static class AntoraYml {
5263
private String version;
5364

5465
private String prerelease;
5566

67+
private String display_version;
68+
5669
public String getVersion() {
5770
return version;
5871
}
@@ -68,5 +81,13 @@ public String getPrerelease() {
6881
public void setPrerelease(String prerelease) {
6982
this.prerelease = prerelease;
7083
}
84+
85+
public String getDisplay_version() {
86+
return display_version;
87+
}
88+
89+
public void setDisplay_version(String display_version) {
90+
this.display_version = display_version;
91+
}
7192
}
7293
}

buildSrc/src/test/java/org/springframework/gradle/antora/CheckAntoraVersionPluginTests.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ void defaultsPropertiesWhenSnapshot() {
3131
CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
3232
assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0");
3333
assertThat(checkAntoraVersionTask.getAntoraPrerelease().get()).isEqualTo("-SNAPSHOT");
34+
assertThat(checkAntoraVersionTask.getAntoraDisplayVersion().isPresent()).isFalse();
3435
assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
3536
}
3637

@@ -48,6 +49,7 @@ void defaultsPropertiesWhenMilestone() {
4849
CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
4950
assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0-M1");
5051
assertThat(checkAntoraVersionTask.getAntoraPrerelease().get()).isEqualTo("true");
52+
assertThat(checkAntoraVersionTask.getAntoraDisplayVersion().get()).isEqualTo(checkAntoraVersionTask.getAntoraVersion().get());
5153
assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
5254
}
5355

@@ -65,6 +67,7 @@ void defaultsPropertiesWhenRc() {
6567
CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
6668
assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0-RC1");
6769
assertThat(checkAntoraVersionTask.getAntoraPrerelease().get()).isEqualTo("true");
70+
assertThat(checkAntoraVersionTask.getAntoraDisplayVersion().get()).isEqualTo(checkAntoraVersionTask.getAntoraVersion().get());
6871
assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
6972
}
7073

@@ -82,6 +85,7 @@ void defaultsPropertiesWhenRelease() {
8285
CheckAntoraVersionTask checkAntoraVersionTask = (CheckAntoraVersionTask) task;
8386
assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0");
8487
assertThat(checkAntoraVersionTask.getAntoraPrerelease().isPresent()).isFalse();
88+
assertThat(checkAntoraVersionTask.getAntoraDisplayVersion().isPresent()).isFalse();
8589
assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
8690
}
8791

@@ -97,6 +101,7 @@ void explicitProperties() {
97101
checkAntoraVersionTask.getAntoraPrerelease().set("-SNAPSHOT");
98102
assertThat(checkAntoraVersionTask.getAntoraVersion().get()).isEqualTo("1.0.0");
99103
assertThat(checkAntoraVersionTask.getAntoraPrerelease().get()).isEqualTo("-SNAPSHOT");
104+
assertThat(checkAntoraVersionTask.getAntoraDisplayVersion().isPresent()).isFalse();
100105
assertThat(checkAntoraVersionTask.getAntoraYmlFile().getAsFile().get()).isEqualTo(project.file("antora.yml"));
101106
}
102107

@@ -170,7 +175,7 @@ void matchesWhenMilestone() throws Exception {
170175
String expectedVersion = "1.0.0-M1";
171176
Project project = ProjectBuilder.builder().build();
172177
File rootDir = project.getRootDir();
173-
IOUtils.write("version: '1.0.0-M1'\nprerelease: 'true'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
178+
IOUtils.write("version: '1.0.0-M1'\nprerelease: 'true'\ndisplay_version: '1.0.0-M1'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
174179
project.setVersion(expectedVersion);
175180
project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
176181

@@ -187,7 +192,7 @@ void matchesWhenRc() throws Exception {
187192
String expectedVersion = "1.0.0-RC1";
188193
Project project = ProjectBuilder.builder().build();
189194
File rootDir = project.getRootDir();
190-
IOUtils.write("version: '1.0.0-RC1'\nprerelease: 'true'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
195+
IOUtils.write("version: '1.0.0-RC1'\nprerelease: 'true'\ndisplay_version: '1.0.0-RC1'", new FileOutputStream(new File(rootDir, "antora.yml")), StandardCharsets.UTF_8);
191196
project.setVersion(expectedVersion);
192197
project.getPluginManager().apply(CheckAntoraVersionPlugin.class);
193198

0 commit comments

Comments
 (0)