Skip to content

Commit b1fe47b

Browse files
Willem BorgesiusWillem Borgesius
authored andcommitted
Pass param value maps back so that they can be logged in the callstack for a build step.
Add secret param method Re-use paramInterceptor in stringInterceptor
1 parent 19dc388 commit b1fe47b

File tree

3 files changed

+42
-11
lines changed

3 files changed

+42
-11
lines changed

src/main/groovy/com/lesfurets/jenkins/unit/declarative/DeclarativePipelineTest.groovy

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,18 @@ abstract class DeclarativePipelineTest extends BasePipelineTest {
1212
GenericPipelineDeclaration.createComponent(DeclarativePipeline, closure).execute(delegate)
1313
}
1414

15-
def paramInterceptor = { Map desc ->
16-
addParam(desc.name, desc.defaultValue, false)
15+
def paramInterceptor = { Map param ->
16+
addParam(param.name, param.defaultValue, false)
17+
return param
1718
}
1819

19-
def stringInterceptor = { Map desc->
20-
if (desc) {
21-
// we are in context of paremetes { string(...)}
22-
if (desc.name) {
23-
addParam(desc.name, desc.defaultValue, false)
24-
}
25-
// we are in context of withCredentaials([string()..]) { }
26-
if(desc.variable) {
27-
return desc.variable
20+
def stringInterceptor = { Map param ->
21+
if (param) {
22+
// we are in context of withCredentials([string()..]) { }
23+
if(param.variable) {
24+
return param.variable
25+
} else {
26+
return paramInterceptor(param)
2827
}
2928
}
3029
}
@@ -45,6 +44,11 @@ abstract class DeclarativePipelineTest extends BasePipelineTest {
4544
helper.registerAllowedMethod('string', [Map], stringInterceptor)
4645
helper.registerAllowedMethod('timeout', [Integer, Closure])
4746
helper.registerAllowedMethod('timestamps')
47+
helper.registerAllowedMethod('password', [Map], { Map param ->
48+
String obscuredValue = param.containsKey("value") ? param.get("value").replaceAll(".","*") : null
49+
param.put("value", obscuredValue)
50+
return paramInterceptor(param)
51+
})
4852
binding.setVariable('credentials', [:])
4953
binding.setVariable('params', [:])
5054
}

src/test/groovy/com/lesfurets/jenkins/unit/declarative/TestDeclarativePipeline.groovy

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,4 +303,13 @@ class TestDeclarativePipeline extends DeclarativePipelineTest {
303303
assertJobStatusSuccess()
304304
}
305305

306+
@Test
307+
void should_log_downstream_var() throws Exception {
308+
runScript('DownstreamBuild_Jenkinsfile')
309+
printCallStack()
310+
assertCallStack().contains('build({job=stop, parameters=[{name=stringVarName, value=stringVarValue}, {name=secretVarName, value=***********}, {name=booleanVarName, value=true}], wait=true}')
311+
assertJobStatusSuccess()
312+
313+
}
314+
306315
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
pipeline {
2+
agent none
3+
stages {
4+
stage('Run subbuild') {
5+
parallel {
6+
stage('Build') {
7+
steps {
8+
build(job: "stop", parameters: [
9+
string(name: 'stringVarName', value: 'stringVarValue'),
10+
password(name: 'secretVarName', value: 'superSecret'),
11+
booleanParam(name: 'booleanVarName', value: 'true')
12+
], wait: true)
13+
}
14+
}
15+
}
16+
}
17+
}
18+
}

0 commit comments

Comments
 (0)