Como você carrega um arquivo groovy e o executa

Eu tenho um arquivo Jenkins lançado na raiz do meu projeto e gostaria de puxar um arquivo groovy para o meu pipeline e executá-lo. A única maneira que consegui fazer isso funcionar é criar um projeto separado e usar o comando fileLoader.fromGit. eu gostaria de fazer

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

Se o seu arquivo JenkinsFile e groovy em um repository e o JenkinsFile estiver carregado a partir do SCM, você precisa fazer:

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() } 

Você tem que fazer checkout scm (ou alguma outra forma de código de checkout do SCM) antes de fazer a load .

Se você tem pipeline que carrega mais de um arquivo groovy e esses arquivos groovy também compartilham coisas entre si:

JenkinsFile.groovy

 def modules = [:] pipeline { agent any stages { stage('test') { steps { script{ modules.first = load "first.groovy" modules.second = load "second.groovy" modules.second.init(modules.first) modules.first.test1() modules.second.test2() } } } } } 

first.groovy

 def test1(){ //add code for this method } def test2(){ //add code for this method } return this 

second.groovy

 import groovy.transform.Field @Field private First = null def init(first) { First = first } def test1(){ //add code for this method } def test2(){ First.test2() } return this 

Obrigado @anton e @Krzysztof Krasori, funcionou bem se eu combinei scout checkout scm e arquivo de origem exato

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() } 

Ciao, thread muito útil, teve o mesmo problema, resolvido seguindo você.

Meu problema era: Jenkinsfile -> chamar um first.groovy -> call second.groovy

Aqui minha solução: Jenkinsfile

 node { checkout scm //other commands if you have def runner = load pwd() + '/first.groovy' runner.whateverMethod(arg1,arg2) } 

first.groovy

 def first.groovy(arg1,arg2){ //whatever others commands def caller = load pwd() + '/second.groovy' caller.otherMethod(arg1,arg2) } 

NB: args são opcionais, adicione-os se você tiver ou deixar em branco.

Espero que isso possa ajudar ainda mais.