I am using Pipeline Global Library along with Jenkinsfile. All build logic 
is in a centralized build script within Jenkins workflowLibs.git

Setting properties to be used on branches:
properties([[$class: 'ParametersDefinitionProperty', parameterDefinitions: 
[[$class: 'BooleanParameterDefinition', defaultValue: false, description: 
'Parameter 
Text', name: 'MY_PARAM']]]])
The properties set during execution of a build will be available next time 
a build is started.

I used the following piece of code to check for this property in my build 
script
def myBoolParam = false
if (getBinding().hasVariable("MY_PARAM")) {
    myBoolParam = Boolean.parseBoolean(MY_PARAM)
}


torsdag 4. august 2016 06.25.13 UTC+2 skrev Advait Chabukswar følgende:
>
> Sverre, can you elabore a bit more on how you did this?
>
> So, I am automating the creation and working of Multibranch Pipeline. I am 
> able to create jobs through Job DSL and it works fine.
> But I have some variables(or parameters) that I want to pass to the 
> individual branches (and I want it to be automated on job creation). If I 
> put it in the Jenkinsfile, it won't be scalable.
>
> I do it for regular pipeline jobs by using the EnvInject plugin, can't use 
> that here though.
> Do you have any solutions for this?
>
> On Wednesday, June 22, 2016 at 2:49:32 AM UTC-5, Sverre Moe wrote:
>>
>> It seems there is no point with Envinject-plugin with Pipeline
>> There is an issue for removing it in the configuration screen.
>> https://issues.jenkins-ci.org/browse/JENKINS-26569
>>
>> Then this is no longer an issue for me. Using the properties context in 
>> the script I was able to add parameters to my multibranch pipeline.
>>
>> onsdag 22. juni 2016 08.45.18 UTC+2 skrev Sverre Moe følgende:
>>>
>>> Found some clue in https://issues.jenkins-ci.org/browse/JENKINS-32780
>>> Using the Snippet code generator I was able to generate a build parameter
>>> properties [[$class: 'ParametersDefinitionProperty', 
>>> parameterDefinitions: [[$class: 'BooleanParameterDefinition', defaultValue: 
>>> false, description: 'Force publish RPM artifacts to repository', name: 
>>> 'FORCE_PUBLISH']]]]
>>>
>>> If I want all branches to have this property, could I put it in my 
>>> global script? I am trying to keep my Jenkinsfiles as DRY as possible.
>>>
>>> Using the Snippet generator to "Prepare an environment for the run"
>>> This is needed because of SECURITY-170, otherwised properties are not 
>>> propagated to downstream builds.
>>> It does not generate anything useful. Previously the result was empty 
>>> whatever I put within "Properties Content". Now I only get
>>> properties [<object of type org.jenkinsci.plugins.envinject.
>>> EnvInjectJobProperty>]
>>> This is what the snippet generator gives me for any of the choices, 
>>> script, file or content.
>>>
>>>
>>>
>>> onsdag 22. juni 2016 08.27.13 UTC+2 skrev Sverre Moe følgende:
>>>>
>>>> Each branch pipeline has their own config.xml. A standard pipeline job 
>>>> does have support for parameterization. I think I read somewhere in 
>>>> Jenkins 
>>>> JIRA that such properties should be defined in the Jenkinsfile and set for 
>>>> the branch pipeline project on the first run. I am a bit unsure how to set 
>>>> them. Cannot find a single example of this.
>>>>
>>>> https://issues.jenkins-ci.org/browse/JENKINS-30519
>>>>
>>>> I know how to set them programatically in the Script console for 
>>>> "regular" projects.
>>>>     StringBuilder builder = new StringBuilder()
>>>>     builder.append("PROP1=true")
>>>>     builder.append("\n")
>>>>     builder.append("PROP2=true")
>>>>     final def propertiesContent = builder.toString()
>>>>
>>>>     def info = new EnvInjectJobPropertyInfo(null, propertiesContent, 
>>>> null, null, null, false)
>>>>     def property = new EnvInjectJobProperty()
>>>>     property.setOn(true)
>>>>     property.setKeepJenkinsSystemVariables(true)
>>>>     property.setKeepBuildVariables(true)
>>>>     property.setInfo(info)
>>>>
>>>>     project.addProperty(property)
>>>>     project.save()
>>>>
>>>>
>>>> mandag 13. juni 2016 10.20.55 UTC+2 skrev Sverre Moe følgende:
>>>>>
>>>>> Either I am doing it wrong, or Multibranch pipeline has no way of 
>>>>> sending parameters to downstream builds.
>>>>> Considering that each branch within a multibranch pipeline seems to be 
>>>>> a single Pipeline project and standard such Pipeline projects can be 
>>>>> parameterized.
>>>>>
>>>>> onsdag 8. juni 2016 12.42.01 UTC+2 skrev Sverre Moe følgende:
>>>>>>
>>>>>> Jenkins Pipeline can be parameterized, but not multibranch pipelines. 
>>>>>> There is no option for "This build is parameterized" in the 
>>>>>> configuration 
>>>>>> of a multibranch pipeline. Why is that?
>>>>>>
>>>>>> I have a multibranch project for each repository with multiple 
>>>>>> branches.
>>>>>>
>>>>>> ProjectA
>>>>>>     master
>>>>>>     develop
>>>>>>     releaseX
>>>>>> ProjectB
>>>>>>     master
>>>>>>     develop
>>>>>>     releaseX
>>>>>>
>>>>>> In this case ProjectB has a dependency on ProjectA on the same branch.
>>>>>>
>>>>>> The Jenkinsfile is sparse, while the common main build logic is 
>>>>>> stored in workflowLibs.git
>>>>>>
>>>>>> When a upstream project builds a dependent downstream project I need 
>>>>>> to provide them with build parameters.
>>>>>> def BUILD_PROJECT = "projectB"+"/"+env.BUILD_BRANCH
>>>>>> build job: BUILD_PROJECT, parameters: [[$class: 
>>>>>> 'BooleanParameterValue', name: 'UPSTREAM_TRIGGERED', value: true]]
>>>>>> I have some logic in the main build script for when the build is 
>>>>>> triggered by an upstream dependency.
>>>>>>
>>>>>> Not sure how I can do this since multibranch pipeline cannot be 
>>>>>> parameterized.
>>>>>>
>>>>>> I have even tried withEnv, but it did not work
>>>>>> withEnv(["UPSTREAM_TRIGGERED=true"]) {
>>>>>>     def BUILD_PROJECT = "projectB"+"/"+env.BUILD_BRANCH
>>>>>>     build BUILD_PROJECT
>>>>>> }
>>>>>>
>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/838de283-98e7-4d5e-a4de-91c16b8e1c5e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to