diff --git a/.buildkite/pipelines/periodic-java-ea.template.yml b/.buildkite/pipelines/periodic-java-ea.template.yml index 088c4cd2c8af3..ace5aeb87252e 100644 --- a/.buildkite/pipelines/periodic-java-ea.template.yml +++ b/.buildkite/pipelines/periodic-java-ea.template.yml @@ -30,13 +30,12 @@ steps: buildDirectory: /dev/shm/bk - group: java-matrix steps: - - label: "{{matrix.GRADLE_TASK}} / java-ea" + - label: "{{matrix.GRADLE_TASK}} / {{matrix.image}} " command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true $$GRADLE_TASK timeout_in_minutes: 300 matrix: setup: image: - - windows-2025 - ubuntu-2404 GRADLE_TASK: - checkPart1 @@ -53,6 +52,30 @@ steps: buildDirectory: /dev/shm/bk env: GRADLE_TASK: "{{matrix.GRADLE_TASK}}" + - label: "{{matrix.GRADLE_TASK}} / {{matrix.image}} " + command: | + .\.buildkite\scripts\run-script.ps1 bash .buildkite/scripts/windows-run-gradle.sh + timeout_in_minutes: 300 + matrix: + setup: + image: + - windows-2025 + GRADLE_TASK: + - checkPart1 + - checkPart2 + - checkPart3 + - checkPart4 + - checkPart5 + - checkPart6 + - checkRestCompat + agents: + provider: gcp + image: family/elasticsearch-{{matrix.image}} + machineType: n1-standard-32 + buildDirectory: /dev/shm/bk + env: + GRADLE_PARAMS: "-Druntime.java=$$JAVA_EA_VERSION" + GRADLE_TASK: "{{matrix.GRADLE_TASK}}" - label: "{{matrix.BWC_VERSION}} / matrix-bwc" command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true v$$BWC_VERSION#bwcTest timeout_in_minutes: 300 diff --git a/.buildkite/pipelines/periodic-java-ea.yml b/.buildkite/pipelines/periodic-java-ea.yml index b40f7dbc157f2..16156bd5dbbdf 100644 --- a/.buildkite/pipelines/periodic-java-ea.yml +++ b/.buildkite/pipelines/periodic-java-ea.yml @@ -468,13 +468,12 @@ steps: buildDirectory: /dev/shm/bk - group: java-matrix steps: - - label: "{{matrix.GRADLE_TASK}} / java-ea" + - label: "{{matrix.GRADLE_TASK}} / {{matrix.image}} " command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true $$GRADLE_TASK timeout_in_minutes: 300 matrix: setup: image: - - windows-2025 - ubuntu-2404 GRADLE_TASK: - checkPart1 @@ -491,6 +490,30 @@ steps: buildDirectory: /dev/shm/bk env: GRADLE_TASK: "{{matrix.GRADLE_TASK}}" + - label: "{{matrix.GRADLE_TASK}} / {{matrix.image}} " + command: | + .\.buildkite\scripts\run-script.ps1 bash .buildkite/scripts/windows-run-gradle.sh + timeout_in_minutes: 300 + matrix: + setup: + image: + - windows-2025 + GRADLE_TASK: + - checkPart1 + - checkPart2 + - checkPart3 + - checkPart4 + - checkPart5 + - checkPart6 + - checkRestCompat + agents: + provider: gcp + image: family/elasticsearch-{{matrix.image}} + machineType: n1-standard-32 + buildDirectory: /dev/shm/bk + env: + GRADLE_PARAMS: "-Druntime.java=${JAVA_EA_VERSION}" + GRADLE_TASK: "{{matrix.GRADLE_TASK}}" - label: "{{matrix.BWC_VERSION}} / matrix-bwc" command: .ci/scripts/run-gradle.sh -Druntime.java=$$JAVA_EA_VERSION -Dbwc.checkout.align=true v$$BWC_VERSION#bwcTest timeout_in_minutes: 300 diff --git a/.buildkite/scripts/windows-run-gradle.sh b/.buildkite/scripts/windows-run-gradle.sh index 75999e105c873..ca10af3c018d2 100755 --- a/.buildkite/scripts/windows-run-gradle.sh +++ b/.buildkite/scripts/windows-run-gradle.sh @@ -2,4 +2,4 @@ set -euo pipefail -.ci/scripts/run-gradle.sh -Dbwc.checkout.align=true $GRADLE_TASK +.ci/scripts/run-gradle.sh -Dbwc.checkout.align=true ${GRADLE_PARAMS:-} $GRADLE_TASK diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java index 04173ee4346ff..aebf66fdbd7a7 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/GlobalBuildInfoPlugin.java @@ -98,7 +98,6 @@ public GlobalBuildInfoPlugin( @Override public void apply(Project project) { - if (project != project.getRootProject()) { throw new IllegalStateException(this.getClass().getName() + " can only be applied to the root project."); } @@ -350,10 +349,10 @@ private RuntimeJava findRuntimeJavaHome() { } private RuntimeJava runtimeJavaHome(Provider fileProvider, boolean explicitlySet) { - return runtimeJavaHome(fileProvider, explicitlySet, null); + return runtimeJavaHome(fileProvider, explicitlySet, null, null); } - private RuntimeJava runtimeJavaHome(Provider fileProvider, boolean explicitlySet, String preReleasePostfix) { + private RuntimeJava runtimeJavaHome(Provider fileProvider, boolean explicitlySet, String preReleasePostfix, Integer buildNumber) { Provider javaVersion = fileProvider.map( javaHome -> determineJavaVersion( "runtime java.home", @@ -367,19 +366,15 @@ private RuntimeJava runtimeJavaHome(Provider fileProvider, boolean explici Provider vendorDetails = fileProvider.map(j -> metadataDetector.getMetadata(getJavaInstallation(j))) .map(m -> formatJavaVendorDetails(m)); - return new RuntimeJava(fileProvider, javaVersion, vendorDetails, explicitlySet, preReleasePostfix); + return new RuntimeJava(fileProvider, javaVersion, vendorDetails, explicitlySet, preReleasePostfix, buildNumber); } private RuntimeJava resolvePreReleaseRuntimeJavaHome(String runtimeJavaProperty) { var major = JavaLanguageVersion.of(Integer.parseInt(runtimeJavaProperty.substring(0, runtimeJavaProperty.length() - 4))); Integer buildNumber = Integer.getInteger("runtime.java.build"); var jdkbuild = buildNumber == null ? findLatestPreReleaseBuild(major) : findPreReleaseBuild(major, buildNumber); - String prVersionString = String.format("%d-%s+%d", major.asInt(), jdkbuild.type(), jdkbuild.buildNumber()); - return resolveJavaHomeFromJdkDownloadPlugin(jdkbuild.type(), major, prVersionString); - - } - - private RuntimeJava resolveJavaHomeFromJdkDownloadPlugin(String preReleaseType, JavaLanguageVersion major, String prVersionString) { + String preReleaseType = jdkbuild.type(); + String prVersionString = String.format("%d-%s+%d", major.asInt(), preReleaseType, jdkbuild.buildNumber()); NamedDomainObjectContainer container = (NamedDomainObjectContainer) project.getExtensions().getByName("jdks"); Jdk jdk = container.create(preReleaseType + "_" + major.asInt(), j -> { j.setVersion(prVersionString); @@ -391,7 +386,7 @@ private RuntimeJava resolveJavaHomeFromJdkDownloadPlugin(String preReleaseType, // We on purpose resolve this here eagerly to ensure we resolve the jdk configuration in the context of the root project. // If we keep this lazy we can not guarantee in which project context this is resolved which will fail the build. File file = new File(jdk.getJavaHomePath().toString()); - return runtimeJavaHome(providers.provider(() -> file), true, preReleaseType); + return runtimeJavaHome(providers.provider(() -> file), true, preReleaseType, jdkbuild.buildNumber()); } private Provider resolveJavaHomeFromToolChainService(String version) { diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/RuntimeJava.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/RuntimeJava.java index a173bcb1ef033..7935d87256f89 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/RuntimeJava.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/info/RuntimeJava.java @@ -21,9 +21,10 @@ public class RuntimeJava { private final boolean explicitlySet; private final String preReleaseType; private final Provider vendorDetails; + private final Integer buildNumber; RuntimeJava(Provider javahome, Provider javaVersion, Provider vendorDetails, boolean explicitlySet) { - this(javahome, javaVersion, vendorDetails, explicitlySet, null); + this(javahome, javaVersion, vendorDetails, explicitlySet, null, null); } RuntimeJava( @@ -31,13 +32,15 @@ public class RuntimeJava { Provider javaVersion, Provider vendorDetails, boolean explicitlySet, - String preReleaseType + String preReleaseType, + Integer buildNumber ) { this.javahome = javahome; this.javaVersion = javaVersion; this.vendorDetails = vendorDetails; this.explicitlySet = explicitlySet; this.preReleaseType = preReleaseType; + this.buildNumber = buildNumber; } public Provider getJavahome() { @@ -63,4 +66,8 @@ public boolean isExplicitlySet() { public String getPreReleaseType() { return preReleaseType; } + + public Integer getBuildNumber() { + return buildNumber; + } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/toolchain/EarlyAccessCatalogJdkToolchainResolver.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/toolchain/EarlyAccessCatalogJdkToolchainResolver.java index e3063aeeff504..798117c9d977f 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/toolchain/EarlyAccessCatalogJdkToolchainResolver.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/toolchain/EarlyAccessCatalogJdkToolchainResolver.java @@ -142,7 +142,6 @@ static List findRecentPreReleaseBuild(JavaLanguageVersion la ObjectMapper mapper = new ObjectMapper(); JsonNode node = mapper.readTree(is); ObjectNode majors = (ObjectNode) node.get("majors"); - System.out.println(majors.getClass()); ObjectNode perVersion = (ObjectNode) majors.get("" + languageVersion.asInt()); ArrayNode buildsNode = (ArrayNode) perVersion.get("builds"); List buildsList = new ArrayList<>(); diff --git a/distribution/build.gradle b/distribution/build.gradle index e13449f4036bf..bd043b4ba5604 100644 --- a/distribution/build.gradle +++ b/distribution/build.gradle @@ -20,7 +20,7 @@ import org.elasticsearch.gradle.transform.FilteringJarTransform import java.nio.file.Files import java.nio.file.Path -import static org.elasticsearch.gradle.internal.toolchain.EarlyAccessCatalogJdkToolchainResolver.findLatestPreReleaseBuildNumber +import static org.elasticsearch.gradle.internal.toolchain.EarlyAccessCatalogJdkToolchainResolver.findLatestPreReleaseBuild plugins { id 'base' @@ -250,13 +250,9 @@ configure(subprojects.findAll { ['archives', 'packages'].contains(it.name) }) { apply plugin: 'elasticsearch.repositories' if (buildParams.runtimeJava.preRelease) { - Integer buildNumber = Integer.getInteger("runtime.java.build") String preReleaseType = buildParams.runtimeJava.preReleaseType def runtimeJavaMajorVersion = Integer.parseInt(buildParams.runtimeJavaVersion.get().getMajorVersion()) - if (buildNumber == null) { - buildNumber = findLatestPreReleaseBuildNumber(runtimeJavaMajorVersion, preReleaseType); - } - String preReleaseVersionString = String.format("%d-%s+%d", runtimeJavaMajorVersion, preReleaseType, buildNumber); + String preReleaseVersionString = String.format("%d-%s+%d", runtimeJavaMajorVersion, preReleaseType, buildParams.runtimeJava.buildNumber) project.jdks { ['darwin', 'windows', 'linux'].each { platform ->