Как загрузить файл groovy и выполнить его
У меня есть файл jenkins, упавший в корень моего проекта и хотел бы вытащить файл groovy для моего конвейера и выполнить его. Единственный способ, которым я смог заставить это работать, - создать отдельный проект и использовать команду fileLoader.fromGit. Я хотел бы сделать
def pipeline = load 'groovy-file-name.groovy'
pipeline.pipeline()
Ответы
Ответ 1
Если ваш файл JenkinsFile и groovy в одном репозитории и JenkinsFile загружен из SCM, вам нужно сделать:
Example.Groovy
def exampleMethod() {
//do something
}
def otherExampleMethod() {
//do something else
}
return this
JenkinsFile
node {
def rootDir = pwd()
def example = load "${rootDir}@script/Example.Groovy "
example.exampleMethod()
example.otherExampleMethod()
}
Ответ 2
Вы должны сделать checkout scm
(или какой-либо другой способ проверки кода из SCM) перед тем, как сделать load
.
Ответ 3
Спасибо @anton и @Krzysztof Krasori, он отлично работал, если я объединил checkout scm
и точный исходный файл
Example.Groovy
def exampleMethod() {
println("exampleMethod")
}
def otherExampleMethod() {
println("otherExampleMethod")
}
return this
JenkinsFile
node {
// Git checkout before load source the file
checkout scm
// To know files are checked out or not
sh '''
ls -lhrt
'''
def rootDir = pwd()
println("Current Directory: " + rootDir)
// point to exact source file
def example = load "${rootDir}/Example.Groovy"
example.exampleMethod()
example.otherExampleMethod()
}