Groovy triggering build with both default and new parameters

37 views
Skip to first unread message

Sverre Moe

unread,
Nov 26, 2015, 6:38:06 AM11/26/15
to Jenkins Users
Groovy Code for triggering a build with a parameter
def params = 
[
    new StringParameterValue('UPSTREAM_TRIGGER_CAUSE', 'true')
]
def paramsAction = new ParametersAction(params)

def cause = new UpstreamCause(build)
def futureTask = project.scheduleBuild2(project.quietPeriod, cause, paramsAction)

I have configured parameters for each projects with default values. When I supply this one extra parameter with scheduleBuild2 the other configured parameters are not set. Thus getting:
 > git rev-parse ${BUILD_BRANCH}^{commit} # timeout=10
ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.

I reckon I have to first get the configured parameters from the project, then add the new one. 
Just not sure how. I can read the properties with
def property = project.getProperty(ParametersDefinitionProperty.class)
But that will not give me a map of key/value for each property.


Sverre Moe

unread,
Nov 26, 2015, 7:13:54 AM11/26/15
to Jenkins Users
I have tried the following solution:
def property = project.getProperty(ParametersDefinitionProperty.class)
def jobParams = property.getParameterDefinitions();

def newParam = new StringParameterValue('UPSTREAM_TRIGGER_CAUSE', 'true')
jobParams.add(newParam)

def parametersAction = new ParametersAction(jobParams)
def cause = new UpstreamCause(build)
def futureTask = project.scheduleBuild2(project.quietPeriod, cause, parametersAction)
However it gets stuck on scheduleBuild2 and does not return.

Sverre Moe

unread,
Nov 26, 2015, 7:40:19 AM11/26/15
to Jenkins Users
Seems that was totally wrong.
My latest attempt seems to work:
def params = []
def extraParameterValue = new BooleanParameterValue('UPSTREAM_TRIGGER_CAUSE', true)
params.add(extraParameterValue)

def parametersDefProp = project.getProperty(ParametersDefinitionProperty.class)
parametersDefProp.getParameterDefinitions().each { param ->
    def parameterValue = param.getDefaultParameterValue()
    params.add(parameterValue)
}

def parametersAction = new ParametersAction(params)
def cause = new UpstreamCause(build)
def futureTask = project.scheduleBuild2(project.quietPeriod, cause, parametersAction)
Reply all
Reply to author
Forward
0 new messages