Run Sonar scans using JDK11. 01/65201/2 v0.57.0
authorJessica Wagantall <jwagantall@linuxfoundation.org>
Tue, 25 Aug 2020 22:15:42 +0000 (15:15 -0700)
committerJessica Wagantall <jwagantall@linuxfoundation.org>
Wed, 26 Aug 2020 18:38:01 +0000 (11:38 -0700)
java-version will only set java for the maven build
part of the job, the sonar scan will use
sonarcloud-java-version which is set to openjdk11.

Projects not compatible with JDK11 will be able to
run their build with java-version set to their JDK
preference.
https://sonarcloud.io/documentation/user-guide/move-analysis-java-11/

Issue: RELENG-3176
Signed-off-by: Jessica Wagantall <jwagantall@linuxfoundation.org>
Change-Id: Ida96043317da7671034416df6a438350041f4731

docs/jjb/lf-maven-jobs.rst
jjb/lf-maven-jobs.yaml
jjb/lf-python-jobs.yaml
releasenotes/notes/maven-sonar-jdk-override-d73c9d6436dfacae.yaml [new file with mode: 0644]
shell/maven-sonar.sh

index 3b3676c..0ce612e 100644 (file)
@@ -34,12 +34,13 @@ Runs Sonar against a Maven project and pushes results to SonarCloud.
 
 :Required Parameters:
 
-    :java-version: Version of Java to execute Sonar with.
+    :java-version: Version of Java to execute Maven build. (default: openjdk8)
     :mvn-version: Version of Maven to execute Sonar with.
     :mvn-settings: Maven settings.xml file containing credentials to use.
     :sonarcloud-project-key: SonarCloud project key.
     :sonarcloud-project-organization: SonarCloud project organization.
     :sonarcloud-api-token: SonarCloud API Token.
+    :sonarcloud-java-version: Version of Java to run the Sonar scan.
 
 lf-maven-build
 --------------
@@ -484,7 +485,7 @@ multi-branch configuration.
         one may want to provide more than 1 cron timer.  (default: 'H H * * 6'
         to run weekly)
     :git-url: URL clone project from. (default: $GIT_URL/$PROJECT)
-    :java-version: Version of Java to use for the build. (default: openjdk8)
+    :java-version: Version of Java to use for the Maven build. (default: openjdk8)
     :mvn-global-settings: The name of the Maven global settings to use for
         Maven configuration. (default: global-settings)
     :mvn-goals: The maven goals to perform for the build.
@@ -500,6 +501,7 @@ multi-branch configuration.
     :sonarcloud-project-organization: SonarCloud project organization.
         (default: '')
     :sonarcloud-api-token: SonarCloud API Token. (default: '')
+    :sonarcloud-java-version: Version of Java to use for the Sonar scan. (default: openjdk11)
     :stream: Keyword that represents a release code-name.
         Often the same as the branch. (default: master)
     :submodule-recursive: Whether to checkout submodules recursively.
index d13bb5d..9bf175c 100644 (file)
     sonarcloud-project-key: ""
     sonarcloud-project-organization: ""
     sonarcloud-api-token: ""
+    # SonarCloud scan using jdk8 will become deprecated by Oct, 2020
+    # Projects not compatible with jdk11 can set java-version to something else
+    sonarcloud-java-version: openjdk11
     stream: master
     submodule-recursive: true
     submodule-timeout: 10
                 sonarcloud-project-key: "{sonarcloud-project-key}"
                 sonarcloud-project-organization: "{sonarcloud-project-organization}"
                 sonarcloud-api-token: "{sonarcloud-api-token}"
+                sonarcloud-java-version: "{sonarcloud-java-version}"
       # With SonarQube
       - conditional-step:
           condition-kind: not
             PROJECT_ORGANIZATION={sonarcloud-project-organization}
             MAVEN_GOALS={mvn-goals}
             API_TOKEN={sonarcloud-api-token}
+            SONARCLOUD_JAVA_VERSION={sonarcloud-java-version}
       - lf-provide-maven-settings:
           global-settings-file: global-settings
           settings-file: "{mvn-settings}"
index c29dd5d..8d3c885 100644 (file)
     sonarcloud-project-key: ""
     sonarcloud-project-organization: ""
     sonarcloud-api-token: ""
+    # SonarCloud scan using jdk8 will become deprecated by Oct, 2020
+    # Projects not compatible with jdk11 can set java-version to something else
+    sonarcloud-java-version: openjdk11
     stream: master
     submodule-recursive: true
     submodule-timeout: 10
                 # yamllint disable-line rule:line-length
                 sonarcloud-project-organization: "{sonarcloud-project-organization}"
                 sonarcloud-api-token: "{sonarcloud-api-token}"
+                sonarcloud-java-version: "{sonarcloud-java-version}"
       # With SonarQube
       - conditional-step:
           condition-kind: not
diff --git a/releasenotes/notes/maven-sonar-jdk-override-d73c9d6436dfacae.yaml b/releasenotes/notes/maven-sonar-jdk-override-d73c9d6436dfacae.yaml
new file mode 100644 (file)
index 0000000..023613e
--- /dev/null
@@ -0,0 +1,9 @@
+---
+fixes:
+  - |
+    Run Sonar scans using JDK11.
+    *java-version* will only set java for the maven build part of the job,
+    the sonar scan will use *sonarcloud-java-version* which is set to *openjdk11*.
+    Projects not compatible with JDK11 will be able to run their build with
+    *java-version* set to their JDK preference.
+    https://sonarcloud.io/documentation/user-guide/move-analysis-java-11/
index d370748..9e00d21 100644 (file)
@@ -36,6 +36,12 @@ if [ "$SONAR_HOST_URL" = "https://sonarcloud.io" ]; then
     params+=("-Dsonar.login=$API_TOKEN")
 fi
 
+if [ "$SET_JDK_VERSION" != "$SONARCLOUD_JAVA_VERSION" ]; then
+    export SET_JDK_VERSION="$SONARCLOUD_JAVA_VERSION"
+    bash <(curl -s https://raw.githubusercontent.com/lfit/releng-global-jjb/master/shell/update-java-alternatives.sh)
+    source /tmp/java.env
+fi
+
 # Disable SC2086 because we want to allow word splitting for $MAVEN_* parameters.
 # shellcheck disable=SC2086
 "$MVN" $SONAR_MAVEN_GOAL \