@Override public void evaluate() throws Throwable { Map<String,String> slaveEnv = new HashMap<String,String>(); slaveEnv.put("BUILD_TAG", null); slaveEnv.put("PERMACHINE", "set"); createSpecialEnvSlave(story.j, "slave", null, slaveEnv); p = jenkins().createProject(WorkflowJob.class, "demo"); p.setDefinition(new CpsFlowDefinition("node('slave') {\n" + " if (isUnix()) {sh 'echo tag=$BUILD_TAG PERMACHINE=$PERMACHINE'} else {bat 'echo tag=%BUILD_TAG% PERMACHINE=%PERMACHINE%'}\n" + " env.BUILD_TAG='custom'\n" + " if (isUnix()) {sh 'echo tag2=$BUILD_TAG'} else {bat 'echo tag2=%BUILD_TAG%'}\n" + " env.STUFF='more'\n" + " semaphore 'env'\n" + " env.BUILD_TAG=\"${env.BUILD_TAG}2\"\n" + " if (isUnix()) {sh 'echo tag3=$BUILD_TAG stuff=$STUFF'} else {bat 'echo tag3=%BUILD_TAG% stuff=%STUFF%'}\n" + " if (isUnix()) {env.PATH=\"/opt/stuff/bin:${env.PATH}\"} else {env.PATH=$/c:\\whatever;${env.PATH}/$}\n" + " if (isUnix()) {sh 'echo shell PATH=$PATH'} else {bat 'echo shell PATH=%PATH%'}\n" + " echo \"groovy PATH=${env.PATH}\"\n" + " echo \"simplified groovy PATH=${PATH}\"\n" + "}", true)); startBuilding(); SemaphoreStep.waitForStart("env/1", b); assertTrue(b.isBuilding()); } });