From 7c2135c6bcfaa10e3b51a7cfac7b85b9824dbbc2 Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Thu, 2 Mar 2023 12:06:45 -0800 Subject: [PATCH] Use bundled JDK by default when testing in CI --- .ci/java-versions-aarch64.properties | 1 - .ci/java-versions-fips.properties | 1 - .ci/java-versions.properties | 1 - .ci/matrix-runtime-javas-fips.yml | 2 +- .ci/matrix-runtime-javas.yml | 2 +- .ci/scripts/packaging-test.ps1 | 2 -- .ci/scripts/packaging-test.sh | 4 ---- ...elasticsearch.runtime-jdk-provision.gradle | 10 ++++++++++ .../ThirdPartyAuditPrecommitPlugin.java | 3 ++- .../precommit/ThirdPartyAuditTask.java | 20 ++++++++----------- 10 files changed, 22 insertions(+), 24 deletions(-) diff --git a/.ci/java-versions-aarch64.properties b/.ci/java-versions-aarch64.properties index 1aa2b0cd12f1..b1e0f4cfe8af 100644 --- a/.ci/java-versions-aarch64.properties +++ b/.ci/java-versions-aarch64.properties @@ -5,4 +5,3 @@ # are 'java' or 'openjdk' followed by the major release number. ES_BUILD_JAVA=jdk17 -ES_RUNTIME_JAVA=jdk17 diff --git a/.ci/java-versions-fips.properties b/.ci/java-versions-fips.properties index 81c3f36298a7..fa6873935576 100644 --- a/.ci/java-versions-fips.properties +++ b/.ci/java-versions-fips.properties @@ -5,4 +5,3 @@ # are 'java' or 'openjdk' followed by the major release number. ES_BUILD_JAVA=openjdk17 -ES_RUNTIME_JAVA=openjdk17 diff --git a/.ci/java-versions.properties b/.ci/java-versions.properties index 8a0c526d414f..21884973742b 100644 --- a/.ci/java-versions.properties +++ b/.ci/java-versions.properties @@ -5,4 +5,3 @@ # are 'java' or 'openjdk' followed by the major release number. ES_BUILD_JAVA=openjdk17 -ES_RUNTIME_JAVA=openjdk17 diff --git a/.ci/matrix-runtime-javas-fips.yml b/.ci/matrix-runtime-javas-fips.yml index e9ace78b3582..7e7798d99736 100644 --- a/.ci/matrix-runtime-javas-fips.yml +++ b/.ci/matrix-runtime-javas-fips.yml @@ -1,5 +1,5 @@ # This file is used as part of a matrix build in Jenkins where the # values below are included as an axis of the matrix. -ES_RUNTIME_JAVA: +RUNTIME_JAVA_HOME: - openjdk17 diff --git a/.ci/matrix-runtime-javas.yml b/.ci/matrix-runtime-javas.yml index 07582c4892d5..eb70a5fae1f9 100644 --- a/.ci/matrix-runtime-javas.yml +++ b/.ci/matrix-runtime-javas.yml @@ -5,7 +5,7 @@ # which Elasticsearch will be tested. Valid Java versions are 'java' # or 'openjdk' followed by the major release number. -ES_RUNTIME_JAVA: +RUNTIME_JAVA_HOME: - graalvm-ce17 - openjdk17 - openjdk18 diff --git a/.ci/scripts/packaging-test.ps1 b/.ci/scripts/packaging-test.ps1 index 6c9d6ada8feb..3b30e2f32403 100644 --- a/.ci/scripts/packaging-test.ps1 +++ b/.ci/scripts/packaging-test.ps1 @@ -9,7 +9,6 @@ If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdent $AppProps = ConvertFrom-StringData (Get-Content .ci/java-versions.properties -raw) $env:ES_BUILD_JAVA=$AppProps.ES_BUILD_JAVA -$env:ES_RUNTIME_JAVA=$AppProps.ES_RUNTIME_JAVA $env:JAVA_TOOL_OPTIONS='' $ErrorActionPreference="Stop" @@ -23,7 +22,6 @@ Copy-Item .ci/init.gradle -Destination $gradleInit [Environment]::SetEnvironmentVariable("JAVA_HOME", $null, "Machine") $env:PATH="C:\Users\jenkins\.java\$env:ES_BUILD_JAVA\bin\;$env:PATH" $env:JAVA_HOME=$null -$env:SYSTEM_JAVA_HOME="C:\Users\jenkins\.java\$env:ES_RUNTIME_JAVA" Remove-Item -Recurse -Force \tmp -ErrorAction Ignore New-Item -ItemType directory -Path \tmp diff --git a/.ci/scripts/packaging-test.sh b/.ci/scripts/packaging-test.sh index 7b0e8f3320be..b56e9f1ddc41 100755 --- a/.ci/scripts/packaging-test.sh +++ b/.ci/scripts/packaging-test.sh @@ -23,7 +23,6 @@ sudo useradd vagrant set -e . .ci/java-versions.properties -RUNTIME_JAVA_HOME=$HOME/.java/$ES_RUNTIME_JAVA BUILD_JAVA_HOME=$HOME/.java/$ES_BUILD_JAVA rm -Rfv $HOME/.gradle/init.d/ && mkdir -p $HOME/.gradle/init.d @@ -57,7 +56,6 @@ fi sudo bash -c 'cat > /etc/sudoers.d/elasticsearch_vars' << SUDOERS_VARS Defaults env_keep += "ES_JAVA_HOME" Defaults env_keep += "JAVA_HOME" - Defaults env_keep += "SYSTEM_JAVA_HOME" SUDOERS_VARS sudo chmod 0440 /etc/sudoers.d/elasticsearch_vars @@ -74,9 +72,7 @@ git config --global --add safe.directory $WORKSPACE # be explicit about Gradle home dir so we use the same even with sudo sudo -E env \ PATH=$BUILD_JAVA_HOME/bin:`sudo bash -c 'echo -n $PATH'` \ - RUNTIME_JAVA_HOME=`readlink -f -n $RUNTIME_JAVA_HOME` \ --unset=ES_JAVA_HOME \ --unset=JAVA_HOME \ - SYSTEM_JAVA_HOME=`readlink -f -n $RUNTIME_JAVA_HOME` \ ./gradlew -g $HOME/.gradle --scan --parallel --continue $@ diff --git a/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle b/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle index 198f1db17de7..5b87a40ffb21 100644 --- a/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle +++ b/build-tools-internal/src/main/groovy/elasticsearch.runtime-jdk-provision.gradle @@ -10,6 +10,8 @@ import org.elasticsearch.gradle.Architecture import org.elasticsearch.gradle.OS import org.elasticsearch.gradle.VersionProperties import org.elasticsearch.gradle.internal.info.BuildParams +import org.elasticsearch.gradle.internal.precommit.ThirdPartyAuditPrecommitPlugin +import org.elasticsearch.gradle.internal.precommit.ThirdPartyAuditTask import org.elasticsearch.gradle.internal.test.rest.RestTestBasePlugin import org.elasticsearch.gradle.testclusters.StandaloneRestIntegTestTask @@ -54,4 +56,12 @@ configure(allprojects) { } } } + + project.plugins.withType(ThirdPartyAuditPrecommitPlugin) { + project.getTasks().withType(ThirdPartyAuditTask.class).configureEach { + if (BuildParams.getIsRuntimeJavaHomeSet() == false) { + javaHome.set(providers.provider(() -> "${project.jdks.provisioned_runtime.javaHomePath}")) + } + } + } } diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java index dbf949c5b6d2..f533ca46d728 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditPrecommitPlugin.java @@ -17,6 +17,7 @@ import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; import org.gradle.api.tasks.TaskProvider; +import java.io.File; import java.nio.file.Path; public class ThirdPartyAuditPrecommitPlugin extends PrecommitPlugin { @@ -61,7 +62,7 @@ public class ThirdPartyAuditPrecommitPlugin extends PrecommitPlugin { })); t.dependsOn(resourcesTask); if (BuildParams.getIsRuntimeJavaHomeSet()) { - t.setJavaHome(BuildParams.getRuntimeJavaHome().getPath()); + t.getJavaHome().set(project.provider(BuildParams::getRuntimeJavaHome).map(File::getPath)); } t.getTargetCompatibility().set(project.provider(BuildParams::getRuntimeJavaVersion)); t.setSignatureFile(resourcesDir.resolve("forbidden/third-party-audit.txt").toFile()); diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java index 229184b05af6..7aefa5eda94b 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/precommit/ThirdPartyAuditTask.java @@ -79,7 +79,7 @@ public abstract class ThirdPartyAuditTask extends DefaultTask { private File signatureFile; - private String javaHome; + private Property javaHome; private final Property targetCompatibility; @@ -106,6 +106,7 @@ public abstract class ThirdPartyAuditTask extends DefaultTask { this.fileSystemOperations = fileSystemOperations; this.projectLayout = projectLayout; this.targetCompatibility = objectFactory.property(JavaVersion.class); + this.javaHome = objectFactory.property(String.class); } @Input @@ -127,16 +128,11 @@ public abstract class ThirdPartyAuditTask extends DefaultTask { this.signatureFile = signatureFile; } - @Input - @Optional - public String getJavaHome() { + @Internal + public Property getJavaHome() { return javaHome; } - public void setJavaHome(String javaHome) { - this.javaHome = javaHome; - } - @Internal public File getJarExpandDir() { return projectLayout.getBuildDirectory().dir("precommit/thirdPartyAudit").get().dir(getName()).getAsFile(); @@ -335,8 +331,8 @@ public abstract class ThirdPartyAuditTask extends DefaultTask { private String runForbiddenAPIsCli() throws IOException { ByteArrayOutputStream errorOut = new ByteArrayOutputStream(); ExecResult result = execOperations.javaexec(spec -> { - if (javaHome != null) { - spec.setExecutable(javaHome + "/bin/java"); + if (javaHome.isPresent()) { + spec.setExecutable(javaHome.get() + "/bin/java"); } spec.classpath(getForbiddenAPIsClasspath(), classpath); spec.jvmArgs("-Xmx1g"); @@ -368,8 +364,8 @@ public abstract class ThirdPartyAuditTask extends DefaultTask { spec.getMainClass().set(JDK_JAR_HELL_MAIN_CLASS); spec.args(getJarExpandDir()); spec.setIgnoreExitValue(true); - if (javaHome != null) { - spec.setExecutable(javaHome + "/bin/java"); + if (javaHome.isPresent()) { + spec.setExecutable(javaHome.get() + "/bin/java"); } spec.setStandardOutput(standardOut); });