Skip to content

Commit 478223a

Browse files
committed
SONARJAVA-5615 Build using Java 24 (#5198)
1 parent 170f7ae commit 478223a

46 files changed

Lines changed: 302 additions & 305 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cirrus.yml

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,7 @@ log_develocity_url_script: &log_develocity_url_script |
5151

5252
common_build_definition: &COMMON_BUILD_DEFINITION
5353
eks_container:
54-
<<: *CONTAINER_DEFINITION
55-
image: ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/base:j23-latest
54+
<<: *CONTAINER_WITH_DOCKER_DEFINITION
5655
cpu: 4
5756
memory: 4G
5857
env:
@@ -63,6 +62,7 @@ common_build_definition: &COMMON_BUILD_DEFINITION
6362
SONAR_HOST_URL: https://next.sonarqube.com/sonarqube
6463
#allow deployment of pull request artifacts to repox
6564
DEPLOY_PULL_REQUEST: true
65+
JAVA_HOME: /opt/java/openjdk-latest
6666
maven_cache:
6767
folder: ${CIRRUS_WORKING_DIR}/.m2/repository
6868

@@ -105,8 +105,7 @@ test_analyze_task:
105105
ws_scan_task:
106106
<<: *ONLY_SONARSOURCE_QA
107107
eks_container:
108-
<<: *CONTAINER_DEFINITION
109-
image: ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/base:j17-latest
108+
<<: *CONTAINER_WITH_DOCKER_DEFINITION
110109
cpu: 4
111110
memory: 4G
112111
# run only on master and long-term branches
@@ -144,8 +143,7 @@ plugin_qa_task:
144143
- build
145144
<<: *ONLY_SONARSOURCE_QA
146145
eks_container:
147-
<<: *CONTAINER_DEFINITION
148-
image: ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/base:j17-latest
146+
<<: *CONTAINER_WITH_DOCKER_DEFINITION
149147
cpu: 14
150148
memory: 8G
151149
<<: *ORCHESTRATOR_CACHE_PREPARATION_DEFINITION
@@ -176,12 +174,13 @@ sanity_task:
176174
- build
177175
<<: *ONLY_SONARSOURCE_QA
178176
eks_container:
179-
<<: *CONTAINER_DEFINITION
180-
image: ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/base:j23-latest
177+
<<: *CONTAINER_WITH_DOCKER_DEFINITION
181178
cpu: 4
182179
memory: 4G
183180
maven_cache:
184181
folder: ${CIRRUS_WORKING_DIR}/.m2/repository
182+
env:
183+
JAVA_HOME: /opt/java/openjdk-latest
185184
sanity_script:
186185
- *log_develocity_url_script
187186
- source cirrus-env QA
@@ -197,8 +196,7 @@ ruling_task:
197196
- build
198197
<<: *ONLY_SONARSOURCE_QA
199198
eks_container:
200-
<<: *CONTAINER_DEFINITION
201-
image: ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/base:j17-latest
199+
<<: *CONTAINER_WITH_DOCKER_DEFINITION
202200
cpu: 14
203201
memory: 8G
204202
maven_cache:
@@ -258,9 +256,9 @@ autoscan_task:
258256
eks_container:
259257
<<: *CONTAINER_WITH_DOCKER_DEFINITION
260258
# For now, this autoscan_task need to execute two mvn commands:
261-
# * The build of java-checks-test-sources module which requires Java 23.
262-
# * The tests using Orchestrator and SonarQube that, for now, fail to work using Java 23
263-
# This is why we have a local Dockerfile that provide the 2 versions of Java, 17 and 23.
259+
# * The build of java-checks-test-sources module which requires Java 24.
260+
# * The tests using Orchestrator and SonarQube that, for now, fail to work using Java 24
261+
# This is why we have a local Dockerfile that provide the 2 versions of Java, 17 and 24.
264262
cpu: 14
265263
memory: 8G
266264
maven_cache:
@@ -273,7 +271,7 @@ autoscan_task:
273271
- source cirrus-env QA
274272
- source set_maven_build_version $BUILD_NUMBER
275273
- cd java-checks-test-sources
276-
- JAVA_HOME="${JAVA_LATEST_HOME}" mvn clean compile test-compile --batch-mode
274+
- JAVA_HOME=/opt/java/openjdk-latest mvn clean compile test-compile --batch-mode
277275
- cd ../its/autoscan
278276
- mvn clean package --batch-mode --errors --show-version --activate-profiles it-autoscan -Dsonar.runtimeVersion=LATEST_RELEASE -Dmaven.test.redirectTestOutputToFile=false -Dparallel=methods -DuseUnlimitedThreads=true
279277
cleanup_before_cache_script: cleanup_maven_repository
@@ -294,8 +292,7 @@ promote_task:
294292
- autoscan
295293
<<: *ONLY_SONARSOURCE_QA
296294
eks_container:
297-
<<: *CONTAINER_DEFINITION
298-
image: ${CIRRUS_AWS_ACCOUNT}.dkr.ecr.eu-central-1.amazonaws.com/base:j17-latest
295+
<<: *CONTAINER_WITH_DOCKER_DEFINITION
299296
cpu: 2
300297
memory: 1G
301298
env:

.cirrus/Dockerfile.jdk17AndLatest

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,40 +7,12 @@ USER root
77

88
ENV DEBIAN_FRONTEND=noninteractive
99

10-
# The current image is `FROM public.ecr.aws/docker/library/eclipse-temurin:17-jammy`
11-
# Use a similar method to install Java 23 copied from https://github.com/adoptium/containers/blob/main/22/jdk/ubuntu/jammy/Dockerfile
10+
# Copy openjdk from https://github.com/adoptium/containers/blob/main/24/jdk/ubuntu/noble/Dockerfile
11+
COPY --from=eclipse-temurin:24.0.1_9-jdk-noble /opt/java/openjdk /opt/java/openjdk-latest
1212

13-
ENV JAVA_LATEST_HOME /opt/java/openjdk23
14-
ENV JAVA_LATEST_VERSION jdk-23.0.1+11
15-
16-
RUN set -eux; \
17-
ARCH="$(dpkg --print-architecture)"; \
18-
case "${ARCH}" in \
19-
amd64) \
20-
ESUM='2400267e4e9c0f6ae880a4d763af6caf18c673714bdee5debf8388b0b5d52886'; \
21-
BINARY_URL='https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jdk_x64_linux_hotspot_23.0.1_11.tar.gz'; \
22-
;; \
23-
arm64) \
24-
ESUM='0b498a5b673cb50fe9cfd0a13bd39c7259b4fad4d930d614e1563aeb8bca7f0e'; \
25-
BINARY_URL='https://github.com/adoptium/temurin23-binaries/releases/download/jdk-23.0.1%2B11/OpenJDK23U-jre_aarch64_linux_hotspot_23.0.1_11.tar.gz'; \
26-
;; \
27-
*) \
28-
echo "Unsupported arch: ${ARCH}"; \
29-
exit 1; \
30-
;; \
31-
esac; \
32-
wget --progress=dot:giga -O /tmp/openjdk.tar.gz ${BINARY_URL}; \
33-
echo "${ESUM} */tmp/openjdk.tar.gz" | sha256sum -c -; \
34-
mkdir -p "${JAVA_LATEST_HOME}"; \
35-
tar --extract \
36-
--file /tmp/openjdk.tar.gz \
37-
--directory "${JAVA_LATEST_HOME}" \
38-
--strip-components 1 \
39-
--no-same-owner \
40-
; \
41-
rm -f /tmp/openjdk.tar.gz "${JAVA_LATEST_HOME}/lib/src.zip"; \
42-
# https://github.com/docker-library/openjdk/issues/331#issuecomment-498834472
43-
find "${JAVA_LATEST_HOME}/lib" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; \
13+
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en' LC_ALL='en_US.UTF-8'
14+
# https://github.com/docker-library/openjdk/issues/331#issuecomment-498834472
15+
RUN find "/opt/java/openjdk-latest/lib" -name '*.so' -exec dirname '{}' ';' | sort -u > /etc/ld.so.conf.d/docker-openjdk.conf; \
4416
ldconfig; \
4517
# https://github.com/docker-library/openjdk/issues/212#issuecomment-420979840
4618
# https://openjdk.java.net/jeps/341

.cirrus/install-latest-java-on-windows.ps1

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
$javaVersion = "23.0.1+11"
2-
$sha256_x64 = "eb1bc62060f17566b160fae8ce876ada5d639e2fd4781009a1219e971b9937dd"
3-
$sha256_aarch64 = "00ea8896d42ac26cb6887eef08cd6e3b2a54f30e9e87b0fc965e66813567ac87"
1+
$javaVersion = "24.0.1+9"
2+
$sha256_x64 = "2ef7f20c00577747d23999c7b29a0d35d73aeeb9d67aec0aa9825e59084447c3"
3+
$sha256_aarch64 = "aarch64 platform is currently unavailable, see https://adoptium.net/en-GB/news/2025/04/eclipse-temurin-8u452-11027-17015-2107-2401-available/"
44

55
Write-Output "Installing Java ${javaVersion}"
66

its/autoscan/src/test/java/org/sonar/java/it/AutoScanTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ public void javaCheckTestSources() throws Exception {
124124
.setProjectVersion("0.1.0-SNAPSHOT")
125125
.setSourceEncoding("UTF-8")
126126
.setSourceDirs("aws/src/main/java/,default/src/main/java/,java-17/src/main/java/,spring-3.2/src/main/java/,spring-web-4.0/src/main/java/")
127-
.setTestDirs("default/src/test/java/,test-classpath-reader/src/test/java")
128-
.setProperty("sonar.java.source", "23")
127+
.setTestDirs("default/src/test/java/,java-17/src/test/java/,test-classpath-reader/src/test/java")
128+
.setProperty("sonar.java.source", "24")
129129
// common properties
130130
.setProperty("sonar.cpd.exclusions", "**/*")
131131
.setProperty("sonar.skipPackageDesign", "true")
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"ruleKey": "S1128",
33
"hasTruePositives": true,
4-
"falseNegatives": 32,
4+
"falseNegatives": 30,
55
"falsePositives": 0
66
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"ruleKey": "S1874",
33
"hasTruePositives": true,
4-
"falseNegatives": 249,
4+
"falseNegatives": 245,
55
"falsePositives": 0
66
}

java-checks-aws/src/test/java/org/sonar/java/checks/CommonConstants.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

java-checks-aws/src/test/java/org/sonar/java/checks/aws/AwsConsumerBuilderUsageCheckTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
import org.junit.jupiter.api.Test;
2020
import org.sonar.java.checks.verifier.CheckVerifier;
2121

22-
import static org.sonar.java.checks.CommonConstants.AWS_CLASSPATH;
23-
import static org.sonar.java.checks.CommonConstants.AWS_MODULE;
22+
import static org.sonar.java.test.classpath.TestClasspathUtils.AWS_MODULE;
2423
import static org.sonar.java.checks.verifier.TestUtils.mainCodeSourcesPathInModule;
2524
import static org.sonar.java.checks.verifier.TestUtils.nonCompilingTestSourcesPathInModule;
2625

@@ -31,7 +30,7 @@ void test() {
3130
CheckVerifier.newVerifier()
3231
.onFile(mainCodeSourcesPathInModule(AWS_MODULE, "checks/aws/AwsConsumerBuilderUsageCheckSample.java"))
3332
.withCheck(new AwsConsumerBuilderUsageCheck())
34-
.withClassPath(AWS_CLASSPATH)
33+
.withClassPath(AWS_MODULE.getClassPath())
3534
.verifyIssues();
3635
}
3736

@@ -40,7 +39,7 @@ void non_compiling() {
4039
CheckVerifier.newVerifier()
4140
.onFile(nonCompilingTestSourcesPathInModule(AWS_MODULE, "checks/aws/AwsConsumerBuilderUsageCheckSample.java"))
4241
.withCheck(new AwsConsumerBuilderUsageCheck())
43-
.withClassPath(AWS_CLASSPATH)
42+
.withClassPath(AWS_MODULE.getClassPath())
4443
.verifyIssues();
4544
}
4645

java-checks-aws/src/test/java/org/sonar/java/checks/aws/AwsCredentialsShouldBeSetExplicitlyCheckTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@
1919
import org.junit.jupiter.api.Test;
2020
import org.sonar.java.checks.verifier.CheckVerifier;
2121

22-
import static org.sonar.java.checks.CommonConstants.AWS_CLASSPATH;
23-
import static org.sonar.java.checks.CommonConstants.AWS_MODULE;
2422
import static org.sonar.java.checks.verifier.TestUtils.mainCodeSourcesPathInModule;
23+
import static org.sonar.java.test.classpath.TestClasspathUtils.AWS_MODULE;
2524

2625

2726
class AwsCredentialsShouldBeSetExplicitlyCheckTest {
@@ -30,7 +29,7 @@ void test() {
3029
CheckVerifier.newVerifier()
3130
.onFile(mainCodeSourcesPathInModule(AWS_MODULE, "checks/aws/AwsCredentialsShouldBeSetExplicitlyCheckSample.java"))
3231
.withCheck(new AwsCredentialsShouldBeSetExplicitlyCheck())
33-
.withClassPath(AWS_CLASSPATH)
32+
.withClassPath(AWS_MODULE.getClassPath())
3433
.verifyIssues();
3534
}
3635

java-checks-aws/src/test/java/org/sonar/java/checks/aws/AwsLambdaSyncCallCheckTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@
1919
import org.junit.jupiter.api.Test;
2020
import org.sonar.java.checks.verifier.CheckVerifier;
2121

22-
import static org.sonar.java.checks.CommonConstants.AWS_CLASSPATH;
23-
import static org.sonar.java.checks.CommonConstants.AWS_MODULE;
2422
import static org.sonar.java.checks.verifier.TestUtils.mainCodeSourcesPathInModule;
23+
import static org.sonar.java.test.classpath.TestClasspathUtils.AWS_MODULE;
2524

2625
class AwsLambdaSyncCallCheckTest {
2726

@@ -30,7 +29,7 @@ void test() {
3029
CheckVerifier.newVerifier()
3130
.onFile(mainCodeSourcesPathInModule(AWS_MODULE, "checks/aws/AwsLambdaSyncCallCheckSample.java"))
3231
.withCheck(new AwsLambdaSyncCallCheck())
33-
.withClassPath(AWS_CLASSPATH)
32+
.withClassPath(AWS_MODULE.getClassPath())
3433
.verifyIssues();
3534
}
3635
}

0 commit comments

Comments
 (0)