From b2af725362b755b6f6a03a98c0eb1535c2359ec2 Mon Sep 17 00:00:00 2001 From: Nikita Gryzlov Date: Thu, 16 Apr 2020 12:39:25 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D1=81=D1=80=D0=B5=D0=B4=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jenkins/library/IStepExecutor.groovy | 4 ++ .../jenkins/library/StepExecutor.groovy | 7 ++++ .../jenkins/library/steps/SonarScanner.groovy | 3 +- .../library/{steps => utils}/Logger.groovy | 4 +- .../groovy/printLocationTest.groovy | 41 +++++++++++++++++++ vars/printLocation.groovy | 5 ++- 6 files changed, 60 insertions(+), 4 deletions(-) rename src/ru/pulsar/jenkins/library/{steps => utils}/Logger.groovy (80%) create mode 100644 test/integration/groovy/printLocationTest.groovy diff --git a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy index f99f55a..134cbd4 100644 --- a/src/ru/pulsar/jenkins/library/IStepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/IStepExecutor.groovy @@ -1,5 +1,7 @@ package ru.pulsar.jenkins.library +import org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction + interface IStepExecutor { boolean isUnix() @@ -21,4 +23,6 @@ interface IStepExecutor { void tool(String toolName) void withSonarQubeEnv(String installationName, Closure body) + + EnvironmentAction env() } \ No newline at end of file diff --git a/src/ru/pulsar/jenkins/library/StepExecutor.groovy b/src/ru/pulsar/jenkins/library/StepExecutor.groovy index 00474f7..b10a577 100644 --- a/src/ru/pulsar/jenkins/library/StepExecutor.groovy +++ b/src/ru/pulsar/jenkins/library/StepExecutor.groovy @@ -1,5 +1,7 @@ package ru.pulsar.jenkins.library +import org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction + class StepExecutor implements IStepExecutor { private steps @@ -54,4 +56,9 @@ class StepExecutor implements IStepExecutor { body() } } + + @Override + EnvironmentAction env() { + return steps.env + } } diff --git a/src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy b/src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy index 6779e81..fb33668 100644 --- a/src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy +++ b/src/ru/pulsar/jenkins/library/steps/SonarScanner.groovy @@ -3,6 +3,7 @@ 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.Logger import ru.pulsar.jenkins.library.utils.VersionParser class SonarScanner implements Serializable { @@ -25,7 +26,7 @@ class SonarScanner implements Serializable { return } - def env = System.getenv(); + def env = steps.env(); def sonarScannerBinary diff --git a/src/ru/pulsar/jenkins/library/steps/Logger.groovy b/src/ru/pulsar/jenkins/library/utils/Logger.groovy similarity index 80% rename from src/ru/pulsar/jenkins/library/steps/Logger.groovy rename to src/ru/pulsar/jenkins/library/utils/Logger.groovy index 1692335..3d10a24 100644 --- a/src/ru/pulsar/jenkins/library/steps/Logger.groovy +++ b/src/ru/pulsar/jenkins/library/utils/Logger.groovy @@ -1,4 +1,4 @@ -package ru.pulsar.jenkins.library.steps +package ru.pulsar.jenkins.library.utils import ru.pulsar.jenkins.library.IStepExecutor import ru.pulsar.jenkins.library.ioc.ContextRegistry @@ -7,7 +7,7 @@ class Logger implements Serializable { static void printLocation() { IStepExecutor steps = ContextRegistry.getContext().getStepExecutor() - def env = System.getenv(); + def env = steps.env(); steps.echo("Running on node $env.NODE_NAME") } } diff --git a/test/integration/groovy/printLocationTest.groovy b/test/integration/groovy/printLocationTest.groovy new file mode 100644 index 0000000..e5a3a09 --- /dev/null +++ b/test/integration/groovy/printLocationTest.groovy @@ -0,0 +1,41 @@ +import org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition +import org.jenkinsci.plugins.workflow.job.WorkflowJob +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.jvnet.hudson.test.JenkinsRule + +class printLocationTest { + + @Rule + public JenkinsRule rule = new JenkinsRule() + + @Before + void configureGlobalGitLibraries() { + RuleBootstrapper.setup(rule) + } + + @Test + void "Logger should echo current node name"() { + def pipeline = ''' + import ru.pulsar.jenkins.library.utils.Logger + + pipeline { + agent any + stages { + stage('test') { + steps { + printLocation() + } + } + } + } + '''.stripIndent() + final CpsFlowDefinition flow = new CpsFlowDefinition(pipeline, true) + final WorkflowJob workflowJob = rule.createProject(WorkflowJob, 'project') + workflowJob.definition = flow + + rule.assertLogContains('Running on node master', rule.buildAndAssertSuccess(workflowJob)) + } + +} diff --git a/vars/printLocation.groovy b/vars/printLocation.groovy index c408e98..04c68d3 100644 --- a/vars/printLocation.groovy +++ b/vars/printLocation.groovy @@ -1,5 +1,8 @@ -import ru.pulsar.jenkins.library.steps.Logger +import ru.pulsar.jenkins.library.ioc.ContextRegistry +import ru.pulsar.jenkins.library.utils.Logger def call() { + ContextRegistry.registerDefaultContext(this) + Logger.printLocation() }