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] <javascript:>>:
>
>> 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] <javascript:>.
>> 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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/82ee1124-fd31-4107-9a33-77c9ff041271%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to