From 06490585c77bb82aeea0657ada2fe6dce8e11481 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 16 May 2024 12:11:33 +0100 Subject: [PATCH] Update workflow generation to allow Java version customization See gh-218 --- .github/workflows/smoke-test-jvm.yml | 5 +++++ .github/workflows/smoke-test-native.yml | 5 +++++ .github/workflows/smoke-test.yml | 19 ++++++++++++------ .../GenerateGitHubActionsWorkflows.java | 3 +++ .../springframework/aot/gradle/SmokeTest.java | 20 +++++++++++++++---- .../src/main/resources/smoke-test-jvm.yml | 5 +++++ .../src/main/resources/smoke-test-native.yml | 5 +++++ .../src/main/resources/smoke-test.yml | 19 ++++++++++++------ 8 files changed, 65 insertions(+), 16 deletions(-) diff --git a/.github/workflows/smoke-test-jvm.yml b/.github/workflows/smoke-test-jvm.yml index d8094434..bf84742f 100644 --- a/.github/workflows/smoke-test-jvm.yml +++ b/.github/workflows/smoke-test-jvm.yml @@ -18,6 +18,10 @@ on: required: false type: boolean default: false + java_version: + required: false + type: string + default: '17' jobs: jvm_smoke_test: name: ${{ inputs.task }} @@ -30,3 +34,4 @@ jobs: checkout_repository: ${{ inputs.checkout_repository }} checkout_ref: ${{ inputs.checkout_ref }} expected_to_fail: ${{ inputs.expected_to_fail }} + java_version: ${{ inputs.java_version }} diff --git a/.github/workflows/smoke-test-native.yml b/.github/workflows/smoke-test-native.yml index fd320d8f..d91a922f 100644 --- a/.github/workflows/smoke-test-native.yml +++ b/.github/workflows/smoke-test-native.yml @@ -18,6 +18,10 @@ on: required: false type: boolean default: false + java_version: + required: false + type: string + default: '17' jobs: native_smoke_test: name: ${{ inputs.task }} @@ -30,3 +34,4 @@ jobs: checkout_repository: ${{ inputs.checkout_repository }} checkout_ref: ${{ inputs.checkout_ref }} expected_to_fail: ${{ inputs.expected_to_fail }} + graal_version: ${{ inputs.java_version }} diff --git a/.github/workflows/smoke-test.yml b/.github/workflows/smoke-test.yml index 26d2a8e9..2f29a7e9 100644 --- a/.github/workflows/smoke-test.yml +++ b/.github/workflows/smoke-test.yml @@ -21,6 +21,14 @@ on: required: false type: boolean default: false + graal_version: + required: false + type: string + default: '17' + java_version: + required: false + type: string + default: '17' jobs: smoke_test: name: ${{ inputs.task }} @@ -31,15 +39,14 @@ jobs: with: repository: ${{ inputs.checkout_repository }} ref: ${{ inputs.checkout_ref }} - - name: Set up Java - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1 - if: ${{ inputs.type == 'jvm' }} - with: - java-version: '17' - distribution: 'liberica' - name: Set up GraalVM uses: graalvm/setup-graalvm@2f25c0caae5b220866f732832d5e3e29ff493338 # v1.2.1 if: ${{ inputs.type == 'native' }} + with: + java-version: ${{ inputs.graal-java-version }} + distribution: 'liberica' + - name: Set up Java + uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1 with: java-version: '17' distribution: 'liberica' diff --git a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/java/org/springframework/aot/gradle/GenerateGitHubActionsWorkflows.java b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/java/org/springframework/aot/gradle/GenerateGitHubActionsWorkflows.java index f63252be..f86a8481 100644 --- a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/java/org/springframework/aot/gradle/GenerateGitHubActionsWorkflows.java +++ b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/java/org/springframework/aot/gradle/GenerateGitHubActionsWorkflows.java @@ -95,6 +95,9 @@ public abstract class GenerateGitHubActionsWorkflows extends DefaultTask { if (test.expectedToFail()) { writer.println(" expected_to_fail: true"); } + if (test.javaVersion() != null) { + writer.println(" java_version: " + test.javaVersion()); + } }); } catch (IOException ex) { diff --git a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/java/org/springframework/aot/gradle/SmokeTest.java b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/java/org/springframework/aot/gradle/SmokeTest.java index db321e97..f0784a70 100644 --- a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/java/org/springframework/aot/gradle/SmokeTest.java +++ b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/java/org/springframework/aot/gradle/SmokeTest.java @@ -48,19 +48,31 @@ public record SmokeTest(String name, String group, String path, List consumer) { - if (properties.containsKey("tests.%s.expectedToFail".formatted(name))) { - consumer.accept(new SmokeTest.Test(name, - Boolean.valueOf(properties.getProperty("tests.%s.expectedToFail".formatted(name))))); + if (configuresTest(properties, name)) { + boolean expectedToFail = Boolean.valueOf(properties.getProperty("tests.%s.expectedToFail".formatted(name))); + String javaVersion = properties.getProperty("tests.%s.javaVersion".formatted(name)); + consumer.accept(new SmokeTest.Test(name, expectedToFail, javaVersion)); } } + private static boolean configuresTest(Properties properties, String name) { + for (Object key : properties.keySet()) { + if (key instanceof String string && string.startsWith("tests." + name + ".")) { + return true; + } + } + return false; + } + /** * An individual test within a smoke test. * * @param taskName the name of the task that runs the test * @param expectedToFail whether to task is expected to fail + * @param javaVersion the required Java version for the test. May be {@code null} to + * use the default version */ - public record Test(String taskName, boolean expectedToFail) implements Serializable { + public record Test(String taskName, boolean expectedToFail, String javaVersion) implements Serializable { } diff --git a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test-jvm.yml b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test-jvm.yml index d8094434..bf84742f 100644 --- a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test-jvm.yml +++ b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test-jvm.yml @@ -18,6 +18,10 @@ on: required: false type: boolean default: false + java_version: + required: false + type: string + default: '17' jobs: jvm_smoke_test: name: ${{ inputs.task }} @@ -30,3 +34,4 @@ jobs: checkout_repository: ${{ inputs.checkout_repository }} checkout_ref: ${{ inputs.checkout_ref }} expected_to_fail: ${{ inputs.expected_to_fail }} + java_version: ${{ inputs.java_version }} diff --git a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test-native.yml b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test-native.yml index fd320d8f..d91a922f 100644 --- a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test-native.yml +++ b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test-native.yml @@ -18,6 +18,10 @@ on: required: false type: boolean default: false + java_version: + required: false + type: string + default: '17' jobs: native_smoke_test: name: ${{ inputs.task }} @@ -30,3 +34,4 @@ jobs: checkout_repository: ${{ inputs.checkout_repository }} checkout_ref: ${{ inputs.checkout_ref }} expected_to_fail: ${{ inputs.expected_to_fail }} + graal_version: ${{ inputs.java_version }} diff --git a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test.yml b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test.yml index 26d2a8e9..2f29a7e9 100644 --- a/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test.yml +++ b/gradle/plugins/aot-smoke-test-ci-plugin/src/main/resources/smoke-test.yml @@ -21,6 +21,14 @@ on: required: false type: boolean default: false + graal_version: + required: false + type: string + default: '17' + java_version: + required: false + type: string + default: '17' jobs: smoke_test: name: ${{ inputs.task }} @@ -31,15 +39,14 @@ jobs: with: repository: ${{ inputs.checkout_repository }} ref: ${{ inputs.checkout_ref }} - - name: Set up Java - uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1 - if: ${{ inputs.type == 'jvm' }} - with: - java-version: '17' - distribution: 'liberica' - name: Set up GraalVM uses: graalvm/setup-graalvm@2f25c0caae5b220866f732832d5e3e29ff493338 # v1.2.1 if: ${{ inputs.type == 'native' }} + with: + java-version: ${{ inputs.graal-java-version }} + distribution: 'liberica' + - name: Set up Java + uses: actions/setup-java@99b8673ff64fbf99d8d325f52d9a5bdedb8483e9 # v4.2.1 with: java-version: '17' distribution: 'liberica'