Преглед изворни кода

[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
Rene Groeschke пре 1 месец
родитељ
комит
284574d4f6

+ 25 - 2
.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

+ 25 - 2
.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

+ 1 - 1
.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

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

@@ -98,7 +98,6 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
 
     @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 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
     }
 
     private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explicitlySet) {
-        return runtimeJavaHome(fileProvider, explicitlySet, null);
+        return runtimeJavaHome(fileProvider, explicitlySet, null, null);
     }
 
-    private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explicitlySet, String preReleasePostfix) {
+    private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explicitlySet, String preReleasePostfix, Integer buildNumber) {
         Provider<JavaVersion> javaVersion = fileProvider.map(
             javaHome -> determineJavaVersion(
                 "runtime java.home",
@@ -367,19 +366,15 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
         Provider<String> 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<Jdk> container = (NamedDomainObjectContainer<Jdk>) project.getExtensions().getByName("jdks");
         Jdk jdk = container.create(preReleaseType + "_" + major.asInt(), j -> {
             j.setVersion(prVersionString);
@@ -391,7 +386,7 @@ public class GlobalBuildInfoPlugin implements Plugin<Project> {
         // 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<File> resolveJavaHomeFromToolChainService(String version) {

+ 9 - 2
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<String> vendorDetails;
+    private final Integer buildNumber;
 
     RuntimeJava(Provider<File> javahome, Provider<JavaVersion> javaVersion, Provider<String> 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> javaVersion,
         Provider<String> 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<File> getJavahome() {
@@ -63,4 +66,8 @@ public class RuntimeJava {
     public String getPreReleaseType() {
         return preReleaseType;
     }
+
+    public Integer getBuildNumber() {
+        return buildNumber;
+    }
 }

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

@@ -142,7 +142,6 @@ public abstract class EarlyAccessCatalogJdkToolchainResolver extends AbstractCus
                 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<JsonNode> buildsList = new ArrayList<>();

+ 2 - 6
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 ->