diff --git a/pom.xml b/pom.xml index bee9e2ac..fa99c7bd 100644 --- a/pom.xml +++ b/pom.xml @@ -156,5 +156,11 @@ scm-api 2.2.6 + + io.jenkins.plugins + generic-environment-filters + 1.1 + test + diff --git a/src/test/java/org/jenkinsci/plugins/workflow/steps/durable_task/ShellStepTest.java b/src/test/java/org/jenkinsci/plugins/workflow/steps/durable_task/ShellStepTest.java index c0e54af5..ba855184 100644 --- a/src/test/java/org/jenkinsci/plugins/workflow/steps/durable_task/ShellStepTest.java +++ b/src/test/java/org/jenkinsci/plugins/workflow/steps/durable_task/ShellStepTest.java @@ -32,6 +32,8 @@ import hudson.slaves.EnvironmentVariablesNodeProperty; import hudson.tasks.BatchFile; import hudson.tasks.Shell; +import io.jenkins.plugins.generic_environment_filters.RemoveSpecificVariablesFilter; +import io.jenkins.plugins.generic_environment_filters.VariableContributingFilter; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; @@ -54,6 +56,7 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import javax.annotation.CheckForNull; +import jenkins.tasks.filters.EnvVarsFilterGlobalConfiguration; import jenkins.util.JenkinsJVM; import org.apache.commons.lang.StringUtils; @@ -724,6 +727,23 @@ private static final class HelloNote extends ConsoleNote> { j.waitForMessage("Timeout has been exceeded", b); // TODO assertLogContains fails unless a sleep is introduced; possible race condition in waitForCompletion } + @Issue("JENKINS-62014") + @Test public void envVarFilters() throws Exception { + EnvVarsFilterGlobalConfiguration.getAllActivatedGlobalRules().add(new RemoveSpecificVariablesFilter("FOO", "TODO: UNUSED")); + EnvVarsFilterGlobalConfiguration.getAllActivatedGlobalRules().add(new VariableContributingFilter("BAZ", "QUX")); + WorkflowJob p = j.jenkins.createProject(WorkflowJob.class, "p"); + p.setDefinition(new CpsFlowDefinition( + "node() {\n" + + " withEnv(['FOO=BAR']) {\n" + + " sh('echo FOO=$FOO and BAZ=$BAZ')\n" + + " }\n" + + "}", true)); + WorkflowRun b = j.buildAndAssertSuccess(p); + j.assertLogContains("FOO=", b); + j.assertLogNotContains("FOO=BAR", b); + j.assertLogContains("BAZ=QUX", b); + } + /** * Asserts that the predicate remains true up to the given timeout. */