What I have is a following:
- global shared library created as described here. Nothing special, one script in
varsfolder calleddeleteFile.groovy, tried it - works. Library is calledmyOneLib - 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
- a pipeline script called
caller.groovythat is callingfirstPipe.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.