From 2d29485f7c41e5799308779b6c22a35c6315e2d0 Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Wed, 15 Apr 2020 18:23:59 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=8B=D1=82=D0=BA=D0=B0=20?= =?UTF-8?q?=D0=B2=D1=8B=D0=BD=D0=BE=D1=81=D0=B0=20sonar-scanner=20=D0=B2?= =?UTF-8?q?=20=D0=BE=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D1=81=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jenkins/library/steps/SonarScanner.groovy | 55 +++++++++++++++++++ vars/pipeline1C.groovy | 4 +- vars/sonarScanner.groovy | 31 ++--------- 3 files changed, 62 insertions(+), 28 deletions(-) create mode 100644 src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy diff --git a/src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy b/src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy new file mode 100644 index 0000000..6779e81 --- /dev/null +++ b/src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy @@ -0,0 +1,55 @@ +package ru.pulsar.jenkins.library.steps + +import ru.pulsar.jenkins.library.IStepExecutor +import ru.pulsar.jenkins.library.configuration.JobConfiguration +import ru.pulsar.jenkins.library.ioc.ContextRegistry +import ru.pulsar.jenkins.library.utils.VersionParser + +class SonarScanner implements Serializable { + + private final JobConfiguration config; + private final String rootFile + + SonarScanner(JobConfiguration config, String rootFile = 'src/cf/Configuration.xml') { + this.config = config + this.rootFile = rootFile + } + + def run() { + IStepExecutor steps = ContextRegistry.getContext().getStepExecutor() + + Logger.printLocation() + + if (!config.sonarQubeOptions.enabled) { + steps.echo("SonarQube step is disabled") + return + } + + def env = System.getenv(); + + def sonarScannerBinary + + if (config.sonarQubeOptions.useSonarScannerFromPath) { + sonarScannerBinary = "sonar-scanner" + } else { + String scannerHome = steps.tool(config.sonarQubeOptions.sonarScannerToolName) + sonarScannerBinary = "$scannerHome/bin/sonar-scanner" + } + + def sonarCommand = "$sonarScannerBinary -Dsonar.branch.name=$env.BRANCH_NAME" + + String configurationVersion = VersionParser.configuration(rootFile) + if (configurationVersion) { + sonarCommand += " -Dsonar.projectVersion=$configurationVersion" + } + + def sonarQubeInstallation = config.sonarQubeOptions.sonarQubeInstallation + if (sonarQubeInstallation == '') { + sonarQubeInstallation = null + } + + steps.withSonarQubeEnv(sonarQubeInstallation) { + steps.cmd(sonarCommand) + } + } +} diff --git a/vars/pipeline1C.groovy b/vars/pipeline1C.groovy index ab7090e..93ec747 100644 --- a/vars/pipeline1C.groovy +++ b/vars/pipeline1C.groovy @@ -40,9 +40,7 @@ void call() { label 'sonar' } steps { - printLocation() - - sonarScanner() + sonarScanner config } } diff --git a/vars/sonarScanner.groovy b/vars/sonarScanner.groovy index 9495b71..920799a 100644 --- a/vars/sonarScanner.groovy +++ b/vars/sonarScanner.groovy @@ -1,29 +1,10 @@ -import com.cloudbees.groovy.cps.NonCPS -import groovy.transform.Field import ru.pulsar.jenkins.library.configuration.JobConfiguration -import ru.pulsar.jenkins.library.utils.VersionParser +import ru.pulsar.jenkins.library.ioc.ContextRegistry +import ru.pulsar.jenkins.library.steps.SonarScanner -@Field def sonarCommand +def call(JobConfiguration config, String rootFile = 'src/cf/Configuration.xml') { + ContextRegistry.registerDefaultContext(this) -def call(String rootFile = 'src/cf/Configuration.xml') { - - def config = jobConfiguration() as JobConfiguration - - String scannerHome = tool config.sonarScannerToolName - sonarCommand = "$scannerHome/bin/sonar-scanner -Dsonar.branch.name=$env.BRANCH_NAME" - - String configurationVersion = VersionParser.configuration(rootFile) - if (configurationVersion) { - sonarCommand += " -Dsonar.projectVersion=$configurationVersion" - } - - withSonarQubeEnv('qa.dev.pulsar.ru') { - cmd sonarCommand - } + def sonarScanner = new SonarScanner(config, rootFile) + sonarScanner.run() } - -@NonCPS -private static String version(String text) { - def matcher = text =~ /(.*)<\/Version>/ - return matcher ? matcher.group(1) : "" -} \ No newline at end of file