Yes, that explained a lot. Thanks.

lørdag 28. mai 2016 02.11.53 UTC+2 skrev Kohsuke Kawaguchi følgende:
>
> See https://github.com/jenkinsci/workflow-cps-global-lib-plugin
>
> Hope that helps!
>
> On Thu, May 26, 2016 at 12:37 AM Sverre Moe <[email protected] 
> <javascript:>> wrote:
>
>> Yes, I came across it, but there is so little information about how to 
>> use this and how it works. 
>> The only thing I could find was this example here 
>> https://github.com/jenkinsci/pipeline-examples/tree/master/global-library-examples/global-function
>> which I did not understand much of.
>>
>> // The call(body) method in any file in workflowLibs.git/vars is exposed 
>> as a method with the same name as the file.
>> In any file in "workflowLibs.git/vars": Where is this location?
>>
>> Jenkinsfile
>> standardBuild {
>>     environment = 'golang:1.5.0'
>>     mainScript = '''
>>         go version
>>         go build -v hello-world.go
>>         '''
>>     postScript = '''
>>         ls -l
>>         ./hello-world
>>         '''
>> }
>>
>> standardBuild.groovy
>> def call(body) {
>>     def config = [:]
>>     body.resolveStrategy = Closure.DELEGATE_FIRST
>>     body.delegate = config
>>     body()
>>     stage 'checkout'
>>     node {
>>         checkout scm
>>         stage 'main'
>>         docker.image(config.environment).inside {
>>             sh config.mainScript
>>         }
>>         stage 'post'
>>         sh config.postScript
>>     }
>> }
>>
>> What is body?
>> What does this do?
>> body.resolveStrategy = Closure.DELEGATE_FIRST
>>
>> From what I could understand it would seem standardBuild in Jenkinsfile 
>> runs the code within call(body) and variables defined in this function in 
>> the Jenkinsfile is accessible through body.delegate = config somewhat, but 
>> why that way around and not config = body.delegate
>>
>> Why is there no def in front of variables in standardBuild?
>> def mainScript
>>
>> Where do I place the file standardBuild.groovy?
>>
>>
>> onsdag 25. mai 2016 22.54.29 UTC+2 skrev Baptiste Mathus følgende:
>>
>>> Did you possibly have a look at: 
>>> https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Remote+Loader+Plugin 
>>> or 
>>> https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Shared+Groovy+Libraries+Plugin
>>> ?
>>>
>> 2016-05-24 16:00 GMT+02:00 Sverre Moe <[email protected]>:
>>>
>> What is the best design approach to keeping the Jenkinsfile small (little 
>>>> build logic as possible)?
>>>>
>>>> Having close to a hundred projects and several branches on each, then 
>>>> duplicating the pipeline logic within each Jenkinsfile would be a 
>>>> maintenance nightmare.
>>>>
>>>> 1)
>>>> I could put the Pipeline script within Jenkins Scriptler
>>>> def packageInformation = load 
>>>> '../../../scriptler/scripts/package-information.groovy'
>>>> packageInformation.init()
>>>> However I'm only able to access this on the master node
>>>>
>>>> 2)
>>>> I could have all the pipeline scripts within a jenkins-ci-scripts 
>>>> project in Git.
>>>> stage 'Init'
>>>> git url: 'ssh://[email protected]/tools/jenkins-ci-scripts.git'
>>>> stash includes: '**/*.groovy', name: 'scripts'
>>>>
>>>> stage 'Checkout'
>>>> checkout scm
>>>> unstash scripts
>>>> def packageInformation = load 
>>>> 'src/main/groovy/com/company/pipeline/package-information.groovy'
>>>> packageInformation.init()
>>>> I could then load the pipeline scripts from this stash. However I do 
>>>> not like having to duplicate even this much in all my different 
>>>> Jenkinsfile.
>>>>
>>>> 3)
>>>> We have a inhouse build tool installed on all build machines. This 
>>>> contains various build scripts, shell, python, ruby.
>>>>
>>>>
>>>> Example Jenkinsfile with little logic as possible
>>>> def branch = env.BUILD_BRANCH
>>>> def pipeline = load '/path/to/our/installed/build-pipeline.groovy'
>>>> parallel pipeline.nodes(branch)
>>>>
>>>>
>>>> My current Jenkins instance I comprised of Multi-configuration 
>>>> jobs/projects (a jenkins job/project for each release branch). Having 
>>>> aprox 
>>>> 8 release branches for each of the 60 projects. I am moving over to 
>>>> Pipeline because of a complex workflow and because Multi-configuration 
>>>> does 
>>>> not support a Prebuild-step that I need.
>>>>
>>> -- 
>>>> 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 [email protected].
>>>
>>>
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/jenkinsci-users/126d204a-f002-4838-a67e-96d02913f7df%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/jenkinsci-users/126d204a-f002-4838-a67e-96d02913f7df%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> -- 
>> 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 [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/jenkinsci-users/82ee1124-fd31-4107-9a33-77c9ff041271%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jenkinsci-users/82ee1124-fd31-4107-9a33-77c9ff041271%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/092748c4-2468-4000-92d6-6f00af0becf4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to