Skip to content

Commit a216415

Browse files
bclozellxbzmy
authored andcommitted
Switch CI pipeline to a JDK17 baseline
This commit introduces a new `spring-framework-6.0.x` CI pipeline with JDK 17 baseline. Note that Kotlin still uses a JDK11 baseline for now, this will be addressed in spring-projectsgh-27413. Closes spring-projectsgh-27409
1 parent e62af7b commit a216415

File tree

9 files changed

+22
-116
lines changed

9 files changed

+22
-116
lines changed

buildSrc/src/main/java/org/springframework/build/compile/CompilerConventionsPlugin.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import org.gradle.api.Project;
2525
import org.gradle.api.plugins.JavaLibraryPlugin;
2626
import org.gradle.api.plugins.JavaPlugin;
27-
import org.gradle.api.plugins.JavaPluginConvention;
2827
import org.gradle.api.tasks.compile.JavaCompile;
2928

3029
/**
@@ -70,7 +69,6 @@ public void apply(Project project) {
7069
* @param project the current project
7170
*/
7271
private void applyJavaCompileConventions(Project project) {
73-
JavaPluginConvention java = project.getConvention().getPlugin(JavaPluginConvention.class);
7472
project.getTasks().withType(JavaCompile.class)
7573
.matching(compileTask -> compileTask.getName().equals(JavaPlugin.COMPILE_JAVA_TASK_NAME))
7674
.forEach(compileTask -> {

buildSrc/src/main/java/org/springframework/build/optional/OptionalDependenciesPlugin.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,9 @@
1919
import org.gradle.api.Plugin;
2020
import org.gradle.api.Project;
2121
import org.gradle.api.artifacts.Configuration;
22-
import org.gradle.api.attributes.Usage;
2322
import org.gradle.api.plugins.JavaPlugin;
24-
import org.gradle.api.plugins.JavaPluginConvention;
23+
import org.gradle.api.plugins.JavaPluginExtension;
2524
import org.gradle.api.tasks.SourceSetContainer;
26-
import org.gradle.plugins.ide.eclipse.EclipsePlugin;
27-
import org.gradle.plugins.ide.eclipse.model.EclipseModel;
2825

2926
/**
3027
* A {@code Plugin} that adds support for Maven-style optional dependencies. Creates a new
@@ -47,7 +44,7 @@ public void apply(Project project) {
4744
optional.setCanBeConsumed(false);
4845
optional.setCanBeResolved(false);
4946
project.getPlugins().withType(JavaPlugin.class, (javaPlugin) -> {
50-
SourceSetContainer sourceSets = project.getConvention().getPlugin(JavaPluginConvention.class)
47+
SourceSetContainer sourceSets = project.getExtensions().getByType(JavaPluginExtension.class)
5148
.getSourceSets();
5249
sourceSets.all((sourceSet) -> {
5350
project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName()).extendsFrom(optional);

ci/images/ci-image/Dockerfile

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ FROM ubuntu:focal-20210827
22

33
ADD setup.sh /setup.sh
44
ADD get-jdk-url.sh /get-jdk-url.sh
5-
RUN ./setup.sh java8
5+
RUN ./setup.sh
66

7-
ENV JAVA_HOME /opt/openjdk/java8
8-
ENV JDK11 /opt/openjdk/java11
9-
ENV JDK16 /opt/openjdk/java16
7+
ENV JAVA_HOME /opt/openjdk/java17
8+
ENV JDK17 /opt/openjdk/java17
109

1110
ENV PATH $JAVA_HOME/bin:$PATH

ci/images/get-jdk-url.sh

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,9 @@
22
set -e
33

44
case "$1" in
5-
java8)
6-
echo "https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u302-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u302b08.tar.gz"
5+
java17)
6+
echo "https://github.com/adoptium/temurin17-binaries/releases/download/jdk17-2021-09-15-08-15-beta/OpenJDK17-jdk_x64_linux_hotspot_2021-09-15-08-15.tar.gz"
77
;;
8-
java11)
9-
echo "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.12_7.tar.gz"
10-
;;
11-
java16)
12-
echo "https://github.com/adoptium/temurin16-binaries/releases/download/jdk-16.0.2%2B7/OpenJDK16U-jdk_x64_linux_hotspot_16.0.2_7.tar.gz"
13-
;;
148
*)
159
echo $"Unknown java version"
1610
exit 1

ci/images/setup.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ curl --output /opt/concourse-release-scripts.jar https://repo.spring.io/release/
2222

2323
mkdir -p /opt/openjdk
2424
pushd /opt/openjdk > /dev/null
25-
for jdk in java8 java11 java16
25+
for jdk in java17
2626
do
2727
JDK_URL=$( /get-jdk-url.sh $jdk )
2828
mkdir $jdk

ci/parameters.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
email-server: "smtp.svc.pivotal.io"
2-
email-from: "[email protected]"
3-
email-to: ["[email protected]"]
41
github-repo: "https://github.com/spring-projects/spring-framework.git"
52
github-repo-name: "spring-projects/spring-framework"
63
docker-hub-organization: "springci"
74
artifactory-server: "https://repo.spring.io"
85
branch: "main"
9-
milestone: "5.3.x"
6+
milestone: "6.0.x"
107
build-name: "spring-framework"
118
pipeline-name: "spring-framework"
129
concourse-url: "https://ci.spring.io"

ci/pipeline.yml

Lines changed: 2 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,6 @@ resources:
6767
icon: github
6868
source:
6969
<<: *git-repo-resource-source
70-
- name: every-morning
71-
type: time
72-
icon: alarm
73-
source:
74-
start: 8:00 AM
75-
stop: 9:00 AM
76-
location: Europe/Vienna
7770
- name: ci-images-git-repo
7871
type: git
7972
icon: github
@@ -86,7 +79,7 @@ resources:
8679
icon: docker
8780
source:
8881
<<: *docker-resource-source
89-
repository: ((docker-hub-organization))/spring-framework-ci
82+
repository: ((docker-hub-organization))/spring-framework-ci-jdk17
9083
- name: artifactory-repo
9184
type: artifactory-resource
9285
icon: package-variant
@@ -111,22 +104,6 @@ resources:
111104
access_token: ((github-ci-status-token))
112105
branch: ((branch))
113106
context: build
114-
- name: repo-status-jdk11-build
115-
type: github-status-resource
116-
icon: eye-check-outline
117-
source:
118-
repository: ((github-repo-name))
119-
access_token: ((github-ci-status-token))
120-
branch: ((branch))
121-
context: jdk11-build
122-
- name: repo-status-jdk16-build
123-
type: github-status-resource
124-
icon: eye-check-outline
125-
source:
126-
repository: ((github-repo-name))
127-
access_token: ((github-ci-status-token))
128-
branch: ((branch))
129-
context: jdk16-build
130107
- name: slack-alert
131108
type: slack-notification
132109
icon: slack
@@ -216,62 +193,6 @@ jobs:
216193
"zip.type": "schema"
217194
get_params:
218195
threads: 8
219-
- name: jdk11-build
220-
serial: true
221-
public: true
222-
plan:
223-
- get: ci-image
224-
- get: git-repo
225-
- get: every-morning
226-
trigger: true
227-
- put: repo-status-jdk11-build
228-
params: { state: "pending", commit: "git-repo" }
229-
- do:
230-
- task: check-project
231-
image: ci-image
232-
file: git-repo/ci/tasks/check-project.yml
233-
privileged: true
234-
timeout: ((task-timeout))
235-
params:
236-
TEST_TOOLCHAIN: 11
237-
<<: *build-project-task-params
238-
on_failure:
239-
do:
240-
- put: repo-status-jdk11-build
241-
params: { state: "failure", commit: "git-repo" }
242-
- put: slack-alert
243-
params:
244-
<<: *slack-fail-params
245-
- put: repo-status-jdk11-build
246-
params: { state: "success", commit: "git-repo" }
247-
- name: jdk16-build
248-
serial: true
249-
public: true
250-
plan:
251-
- get: ci-image
252-
- get: git-repo
253-
- get: every-morning
254-
trigger: true
255-
- put: repo-status-jdk16-build
256-
params: { state: "pending", commit: "git-repo" }
257-
- do:
258-
- task: check-project
259-
image: ci-image
260-
file: git-repo/ci/tasks/check-project.yml
261-
privileged: true
262-
timeout: ((task-timeout))
263-
params:
264-
TEST_TOOLCHAIN: 15
265-
<<: *build-project-task-params
266-
on_failure:
267-
do:
268-
- put: repo-status-jdk16-build
269-
params: { state: "failure", commit: "git-repo" }
270-
- put: slack-alert
271-
params:
272-
<<: *slack-fail-params
273-
- put: repo-status-jdk16-build
274-
params: { state: "success", commit: "git-repo" }
275196
- name: build-pull-requests
276197
serial: true
277198
public: true
@@ -453,7 +374,7 @@ jobs:
453374

454375
groups:
455376
- name: "builds"
456-
jobs: ["build", "jdk11-build", "jdk16-build"]
377+
jobs: ["build"]
457378
- name: "releases"
458379
jobs: ["stage-milestone", "stage-rc", "stage-release", "promote-milestone", "promote-rc", "promote-release", "create-github-release"]
459380
- name: "ci-images"

ci/scripts/check-project.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ set -e
44
source $(dirname $0)/common.sh
55

66
pushd git-repo > /dev/null
7-
./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false -Porg.gradle.java.installations.fromEnv=JDK11,JDK15 \
7+
./gradlew -Dorg.gradle.internal.launcher.welcomeMessageEnabled=false -Porg.gradle.java.installations.fromEnv=JDK17 \
88
-PmainToolchain=${MAIN_TOOLCHAIN} -PtestToolchain=${TEST_TOOLCHAIN} --no-daemon --max-workers=4 check
99
popd > /dev/null

gradle/toolchains.gradle

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
* <li>a JDK11 toolchain for compiling and running the test SourceSet
1212
* </ul>
1313
*
14-
* By default, the build will fall back to using the current JDK and 1.8 language level for all sourceSets.
14+
* By default, the build will fall back to using the current JDK and 17 language level for all sourceSets.
1515
*
1616
* Gradle will automatically detect JDK distributions in well-known locations.
1717
* The following command will list the detected JDKs on the host.
@@ -44,7 +44,7 @@ def mainToolchainLanguageVersion() {
4444
if (mainToolchainConfigured()) {
4545
return JavaLanguageVersion.of(project.mainToolchain.toString())
4646
}
47-
return JavaLanguageVersion.of(8)
47+
return JavaLanguageVersion.of(17)
4848
}
4949

5050
def testToolchainLanguageVersion() {
@@ -64,9 +64,9 @@ plugins.withType(JavaPlugin) {
6464
}
6565
}
6666
else {
67-
// Fallback to JDK8
67+
// Fallback to JDK17
6868
java {
69-
sourceCompatibility = JavaVersion.VERSION_1_8
69+
sourceCompatibility = JavaVersion.VERSION_17
7070
}
7171
}
7272
// Configure a specific Java Toolchain for compiling and running tests if the 'testToolchain' property is defined
@@ -86,10 +86,10 @@ plugins.withType(JavaPlugin) {
8686
}
8787

8888
plugins.withType(GroovyPlugin) {
89-
// Fallback to JDK8
89+
// Fallback to JDK17
9090
if (!mainToolchainConfigured()) {
9191
compileGroovy {
92-
sourceCompatibility = JavaVersion.VERSION_1_8
92+
sourceCompatibility = JavaVersion.VERSION_17
9393
}
9494
}
9595
}
@@ -102,7 +102,7 @@ pluginManager.withPlugin("kotlin") {
102102
languageVersion = mainLanguageVersion
103103
}
104104
// See https://kotlinlang.org/docs/gradle.html#attributes-specific-for-jvm
105-
def javaVersion = mainLanguageVersion.toString() == '8' ? '1.8' : mainLanguageVersion.toString()
105+
def javaVersion = mainLanguageVersion.toString()
106106
compileKotlin {
107107
kotlinOptions {
108108
jvmTarget = javaVersion
@@ -118,15 +118,15 @@ pluginManager.withPlugin("kotlin") {
118118
}
119119
}
120120
else {
121-
// Fallback to JDK8
121+
// Fallback to JDK11
122122
compileKotlin {
123123
kotlinOptions {
124-
jvmTarget = '1.8'
124+
jvmTarget = '11'
125125
}
126126
}
127127
compileTestKotlin {
128128
kotlinOptions {
129-
jvmTarget = '1.8'
129+
jvmTarget = '11'
130130
}
131131
}
132132
}

0 commit comments

Comments
 (0)