Подтвердить что ты не робот

Как загрузить файл groovy и выполнить его

У меня есть файл jenkins, упавший в корень моего проекта и хотел бы вытащить файл groovy для моего конвейера и выполнить его. Единственный способ, которым я смог заставить это работать, - создать отдельный проект и использовать команду fileLoader.fromGit. Я хотел бы сделать

def pipeline = load 'groovy-file-name.groovy'
pipeline.pipeline()
4b9b3361

Ответ 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()
}