Skip to content

Commit 284574d

Browse files
authored
[Buildkite] Polish java ea pipeline setup (#133873)
Tweaks some naming to avoid duplicates and addresses general windows issues invoking custom parameters to a Gradle build
1 parent 2b73a6c commit 284574d

File tree

7 files changed

+68
-25
lines changed

7 files changed

+68
-25
lines changed

.buildkite/pipelines/periodic-java-ea.template.yml

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,12 @@ steps:
3030
buildDirectory: /dev/shm/bk
3131
- group: java-matrix
3232
steps:
33-
- label: "{{matrix.GRADLE_TASK}} / java-ea"
33+
- label: "{{matrix.GRADLE_TASK}} / {{matrix.image}} "
3434
command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true $$GRADLE_TASK
3535
timeout_in_minutes: 300
3636
matrix:
3737
setup:
3838
image:
39-
- windows-2025
4039
- ubuntu-2404
4140
GRADLE_TASK:
4241
- checkPart1
@@ -53,6 +52,30 @@ steps:
5352
buildDirectory: /dev/shm/bk
5453
env:
5554
GRADLE_TASK: "{{matrix.GRADLE_TASK}}"
55+
- label: "{{matrix.GRADLE_TASK}} / {{matrix.image}} "
56+
command: |
57+
.\.buildkite\scripts\run-script.ps1 bash .buildkite/scripts/windows-run-gradle.sh
58+
timeout_in_minutes: 300
59+
matrix:
60+
setup:
61+
image:
62+
- windows-2025
63+
GRADLE_TASK:
64+
- checkPart1
65+
- checkPart2
66+
- checkPart3
67+
- checkPart4
68+
- checkPart5
69+
- checkPart6
70+
- checkRestCompat
71+
agents:
72+
provider: gcp
73+
image: family/elasticsearch-{{matrix.image}}
74+
machineType: n1-standard-32
75+
buildDirectory: /dev/shm/bk
76+
env:
77+
GRADLE_PARAMS: "-Druntime.java=$$JAVA_EA_VERSION"
78+
GRADLE_TASK: "{{matrix.GRADLE_TASK}}"
5679
- label: "{{matrix.BWC_VERSION}} / matrix-bwc"
5780
command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true v$$BWC_VERSION#bwcTest
5881
timeout_in_minutes: 300

.buildkite/pipelines/periodic-java-ea.yml

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -468,13 +468,12 @@ steps:
468468
buildDirectory: /dev/shm/bk
469469
- group: java-matrix
470470
steps:
471-
- label: "{{matrix.GRADLE_TASK}} / java-ea"
471+
- label: "{{matrix.GRADLE_TASK}} / {{matrix.image}} "
472472
command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true $$GRADLE_TASK
473473
timeout_in_minutes: 300
474474
matrix:
475475
setup:
476476
image:
477-
- windows-2025
478477
- ubuntu-2404
479478
GRADLE_TASK:
480479
- checkPart1
@@ -491,6 +490,30 @@ steps:
491490
buildDirectory: /dev/shm/bk
492491
env:
493492
GRADLE_TASK: "{{matrix.GRADLE_TASK}}"
493+
- label: "{{matrix.GRADLE_TASK}} / {{matrix.image}} "
494+
command: |
495+
.\.buildkite\scripts\run-script.ps1 bash .buildkite/scripts/windows-run-gradle.sh
496+
timeout_in_minutes: 300
497+
matrix:
498+
setup:
499+
image:
500+
- windows-2025
501+
GRADLE_TASK:
502+
- checkPart1
503+
- checkPart2
504+
- checkPart3
505+
- checkPart4
506+
- checkPart5
507+
- checkPart6
508+
- checkRestCompat
509+
agents:
510+
provider: gcp
511+
image: family/elasticsearch-{{matrix.image}}
512+
machineType: n1-standard-32
513+
buildDirectory: /dev/shm/bk
514+
env:
515+
GRADLE_PARAMS: "-Druntime.java=${JAVA_EA_VERSION}"
516+
GRADLE_TASK: "{{matrix.GRADLE_TASK}}"
494517
- label: "{{matrix.BWC_VERSION}} / matrix-bwc"
495518
command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true v$$BWC_VERSION#bwcTest
496519
timeout_in_minutes: 300

.buildkite/scripts/windows-run-gradle.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22

33
set -euo pipefail
44

5-
.ci/scripts/run-gradle.sh -Dbwc.checkout.align=true $GRADLE_TASK
5+
.ci/scripts/run-gradle.sh -Dbwc.checkout.align=true ${GRADLE_PARAMS:-} $GRADLE_TASK

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ public GlobalBuildInfoPlugin(
9898

9999
@Override
100100
public void apply(Project project) {
101-
102101
if (project != project.getRootProject()) {
103102
throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project.");
104103
}
@@ -350,10 +349,10 @@ private RuntimeJava findRuntimeJavaHome() {
350349
}
351350

352351
private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explicitlySet) {
353-
return runtimeJavaHome(fileProvider, explicitlySet, null);
352+
return runtimeJavaHome(fileProvider, explicitlySet, null, null);
354353
}
355354

356-
private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explicitlySet, String preReleasePostfix) {
355+
private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explicitlySet, String preReleasePostfix, Integer buildNumber) {
357356
Provider<JavaVersion> javaVersion = fileProvider.map(
358357
javaHome -> determineJavaVersion(
359358
"runtime java.home",
@@ -367,19 +366,15 @@ private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explici
367366
Provider<String> vendorDetails = fileProvider.map(j -> metadataDetector.getMetadata(getJavaInstallation(j)))
368367
.map(m -> formatJavaVendorDetails(m));
369368

370-
return new RuntimeJava(fileProvider, javaVersion, vendorDetails, explicitlySet, preReleasePostfix);
369+
return new RuntimeJava(fileProvider, javaVersion, vendorDetails, explicitlySet, preReleasePostfix, buildNumber);
371370
}
372371

373372
private RuntimeJava resolvePreReleaseRuntimeJavaHome(String runtimeJavaProperty) {
374373
var major = JavaLanguageVersion.of(Integer.parseInt(runtimeJavaProperty.substring(0, runtimeJavaProperty.length() - 4)));
375374
Integer buildNumber = Integer.getInteger("runtime.java.build");
376375
var jdkbuild = buildNumber == null ? findLatestPreReleaseBuild(major) : findPreReleaseBuild(major, buildNumber);
377-
String prVersionString = String.format("%d-%s+%d", major.asInt(), jdkbuild.type(), jdkbuild.buildNumber());
378-
return resolveJavaHomeFromJdkDownloadPlugin(jdkbuild.type(), major, prVersionString);
379-
380-
}
381-
382-
private RuntimeJava resolveJavaHomeFromJdkDownloadPlugin(String preReleaseType, JavaLanguageVersion major, String prVersionString) {
376+
String preReleaseType = jdkbuild.type();
377+
String prVersionString = String.format("%d-%s+%d", major.asInt(), preReleaseType, jdkbuild.buildNumber());
383378
NamedDomainObjectContainer<Jdk> container = (NamedDomainObjectContainer<Jdk>) project.getExtensions().getByName("jdks");
384379
Jdk jdk = container.create(preReleaseType + "_" + major.asInt(), j -> {
385380
j.setVersion(prVersionString);
@@ -391,7 +386,7 @@ private RuntimeJava resolveJavaHomeFromJdkDownloadPlugin(String preReleaseType,
391386
// We on purpose resolve this here eagerly to ensure we resolve the jdk configuration in the context of the root project.
392387
// If we keep this lazy we can not guarantee in which project context this is resolved which will fail the build.
393388
File file = new File(jdk.getJavaHomePath().toString());
394-
return runtimeJavaHome(providers.provider(() -> file), true, preReleaseType);
389+
return runtimeJavaHome(providers.provider(() -> file), true, preReleaseType, jdkbuild.buildNumber());
395390
}
396391

397392
private Provider<File> resolveJavaHomeFromToolChainService(String version) {

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/RuntimeJava.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,26 @@ public class RuntimeJava {
2121
private final boolean explicitlySet;
2222
private final String preReleaseType;
2323
private final Provider<String> vendorDetails;
24+
private final Integer buildNumber;
2425

2526
RuntimeJava(Provider<File> javahome, Provider<JavaVersion> javaVersion, Provider<String> vendorDetails, boolean explicitlySet) {
26-
this(javahome, javaVersion, vendorDetails, explicitlySet, null);
27+
this(javahome, javaVersion, vendorDetails, explicitlySet, null, null);
2728
}
2829

2930
RuntimeJava(
3031
Provider<File> javahome,
3132
Provider<JavaVersion> javaVersion,
3233
Provider<String> vendorDetails,
3334
boolean explicitlySet,
34-
String preReleaseType
35+
String preReleaseType,
36+
Integer buildNumber
3537
) {
3638
this.javahome = javahome;
3739
this.javaVersion = javaVersion;
3840
this.vendorDetails = vendorDetails;
3941
this.explicitlySet = explicitlySet;
4042
this.preReleaseType = preReleaseType;
43+
this.buildNumber = buildNumber;
4144
}
4245

4346
public Provider<File> getJavahome() {
@@ -63,4 +66,8 @@ public boolean isExplicitlySet() {
6366
public String getPreReleaseType() {
6467
return preReleaseType;
6568
}
69+
70+
public Integer getBuildNumber() {
71+
return buildNumber;
72+
}
6673
}

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/toolchain/EarlyAccessCatalogJdkToolchainResolver.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,6 @@ static List<PreReleaseJdkBuild> findRecentPreReleaseBuild(JavaLanguageVersion la
142142
ObjectMapper mapper = new ObjectMapper();
143143
JsonNode node = mapper.readTree(is);
144144
ObjectNode majors = (ObjectNode) node.get("majors");
145-
System.out.println(majors.getClass());
146145
ObjectNode perVersion = (ObjectNode) majors.get("" + languageVersion.asInt());
147146
ArrayNode buildsNode = (ArrayNode) perVersion.get("builds");
148147
List<JsonNode> buildsList = new ArrayList<>();

distribution/build.gradle

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import org.elasticsearch.gradle.transform.FilteringJarTransform
2020
import java.nio.file.Files
2121
import java.nio.file.Path
2222

23-
import static org.elasticsearch.gradle.internal.toolchain.EarlyAccessCatalogJdkToolchainResolver.findLatestPreReleaseBuildNumber
23+
import static org.elasticsearch.gradle.internal.toolchain.EarlyAccessCatalogJdkToolchainResolver.findLatestPreReleaseBuild
2424

2525
plugins {
2626
id 'base'
@@ -250,13 +250,9 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) {
250250
apply plugin: 'elasticsearch.repositories'
251251

252252
if (buildParams.runtimeJava.preRelease) {
253-
Integer buildNumber = Integer.getInteger("runtime.java.build")
254253
String preReleaseType = buildParams.runtimeJava.preReleaseType
255254
def runtimeJavaMajorVersion = Integer.parseInt(buildParams.runtimeJavaVersion.get().getMajorVersion())
256-
if (buildNumber == null) {
257-
buildNumber = findLatestPreReleaseBuildNumber(runtimeJavaMajorVersion, preReleaseType);
258-
}
259-
String preReleaseVersionString = String.format("%d-%s+%d", runtimeJavaMajorVersion, preReleaseType, buildNumber);
255+
String preReleaseVersionString = String.format("%d-%s+%d", runtimeJavaMajorVersion, preReleaseType, buildParams.runtimeJava.buildNumber)
260256

261257
project.jdks {
262258
['darwin', 'windows', 'linux'].each { platform ->

0 commit comments

Comments
 (0)