From 18e841b0e84f3f9f2b33021ae169fe7d9666107c Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Wed, 13 Jan 2021 18:44:07 +0100 Subject: [PATCH] Start sonarqube integration --- Jenkinsfile | 3 +-- build.gradle | 15 +++++++++++++++ scm-it/build.gradle | 4 ++++ .../scm-integration-test-plugin/build.gradle | 8 ++++++++ scm-ui/build.gradle | 18 ++++++++++++++++++ 5 files changed, 46 insertions(+), 2 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 78d77537a3..d1074aad19 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -78,8 +78,7 @@ pipeline { if (env.BRANCH_NAME != "master") { sonar += " -Dsonar.branch.target=master" } - // disable until we know how todo sonar analysis with subprojects - // sh "./gradlew sonarqube" + sh "./gradlew sonarqube" } } } diff --git a/build.gradle b/build.gradle index afd4ea71be..a4551da3dc 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,7 @@ plugins { id 'java-platform' id 'maven-publish' + id "org.sonarqube" version "3.0" } subprojects { s -> @@ -146,6 +147,8 @@ project.ext { nextSnapshotVersion = "${v.major}.${v.minor}.${v.micro + 1}-SNAPSHOT" isCI = isRunningOnCiServer() + os = os() + arch = arch() } publishing { @@ -171,6 +174,7 @@ publishing { } // determine if we run on ci + def isRunningOnCiServer() { return isEnvAvailable("JENKINS_URL") && isEnvAvailable("BUILD_ID") } @@ -180,6 +184,17 @@ def isEnvAvailable(String key) { return value != null && !value.trim().isEmpty() } +def os() { + return System.getProperty("os.name").toLowerCase(Locale.ENGLISH) +} + +def arch() { + def arch = System.getProperty("os.arch") + if ("amd64".equals(arch)) { + return "x64" + } + return arch +} // release related tasks diff --git a/scm-it/build.gradle b/scm-it/build.gradle index b5890e8a8d..83d2c6167e 100644 --- a/scm-it/build.gradle +++ b/scm-it/build.gradle @@ -113,3 +113,7 @@ task integrationTest { description = "Runs all integration tests." group = "verification" } + +sonarqube { + skipProject = true +} diff --git a/scm-plugins/scm-integration-test-plugin/build.gradle b/scm-plugins/scm-integration-test-plugin/build.gradle index 9938e122e6..9eaf06f874 100644 --- a/scm-plugins/scm-integration-test-plugin/build.gradle +++ b/scm-plugins/scm-integration-test-plugin/build.gradle @@ -46,3 +46,11 @@ scmPlugin { } } + +sonarqube { + // TODO + skipProject = true + properties { + property 'sonar.tests', '' + } +} diff --git a/scm-ui/build.gradle b/scm-ui/build.gradle index 65d9018bde..ca0d787252 100644 --- a/scm-ui/build.gradle +++ b/scm-ui/build.gradle @@ -228,3 +228,21 @@ license { task license(type: com.hierynomus.gradle.license.tasks.LicenseCheck) { source = fileTree('.') } + +sonarqube { + properties { + property 'sonar.language', 'typescript' + property 'sonar.sources', project.fileTree('.').include('ui-*/src/**') + property 'sonar.tests', project.fileTree('.').include('ui-*/src/**') + property 'sonar.test.inclusions', '**/*.test.ts,**/*.test.js,**/*.test.tsx' + property 'sonar.junit.reportPaths', 'build/jest-reports/' + // no wildcard support + // https://github.com/SonarSource/SonarJS/issues/578 + property 'sonar.javascript.lcov.reportPaths', 'build/jest-reports/coverage-ui-components/lcov.info,build/jest-reports/coverage-ui-extensions/lcov.info,build/jest-reports/coverage-ui-webapp/lcov.info' + property 'sonar.nodejs.executable', project.file(".gradle/nodejs/node-v${nodeVersion}-${os}-${arch}/bin/node") + } +} + +task sonarqube(type: org.sonarqube.gradle.SonarQubeTask) { + dependsOn 'yarn_install', 'test' +}