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() }