What I have is a following:
vars
folder called deleteFile.groovy
, tried it - works. Library is called myOneLib
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
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.
For this use case, it will make more sense to use the library
step to dynamically load it at runtime.
In your firstPipe.groovy
you could do something like:
final myOneLib = 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
myOneLib.deleteFile 'for 3rd party global library now'
}
}
return this
See the Loading libraries dynamically section of the Extending with Shared Libraries documentation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With