How to use @Library in an imported groovy script in Jenkins declarative pipeline?

Viewed 26744

What I have is a following:

  1. global shared library created as described here. Nothing special, one script in vars folder called deleteFile.groovy, tried it - works. Library is called myOneLib
  2. a pipeline script called firstPipe.groovy
@Library('myOneLib') _

def execute(String zCmakeListsPath){
    stage('some kind of stage 2') {
        echo "Hello from stage 1 with " + zCmakeListsPath
        echo "var attempt ${env.mySrcDir}"

    }
    stage('second stage'){
            echo "and one from stage 2"
            echo "param was " + zCmakeListsPath
            echo "var attempt ${env.myBuildDir}"
            //call function from global lib
            deleteFile 'for 3rd party global library now'
    }
}

return this
  1. a pipeline script called caller.groovy that is calling firstPipe.groovy
pipeline {
    agent any
     environment {
            myBuildDir = "thisShoulbBeBuild"
            mySrcDir = "andHereIsSrc"
        }
    stages {
        stage('first') {
            steps {
                script{
                    echo 'beggining with ' + myBuildDir
                    def rootDir = pwd()
                    echo 'rootDir is ' + rootDir
                    def example = load "${rootDir}/fullPipe/firstPipe.groovy"
                    example.execute("rasAlGhul")
                }
            }
        }
    }
}

Now, when I run the build like this, I get the following error:

ERROR: Could not find any definition of libraries [myOneLib]

but when I simply move the line @Library('myOneLib') _ to the top of caller.groovy everything works.

So my question is how do use the @Library in the imported/included script? Or is there some other way to specify the global library?

Few more notes: caller.groovy and firstPipe.groovy are in the same git repo, and if I eliminate usage of the global library, everything works fine. I'm using declarative pipeline and would like to continue to do so.

1 Answers
Related