如何加载Groovy文件并通过Jenkins声明性管道脚本调用其中的方法

如何加载Groovy文件并通过Jenkins声明性管道脚本调用其中的方法,jenkins,groovy,jenkins-pipeline,Jenkins,Groovy,Jenkins Pipeline,我有一个声明性管道格式的文件,如下所示 pipeline{ agent{ label 'xyz-test' } options{ timeout(time: 1, unit: 'HOURS') timestamps() } environment { UTILITY = load pwd() + 'path to /utils.groovy' } stages{

我有一个声明性管道格式的文件,如下所示

pipeline{
    agent{
        label 'xyz-test'
    }
    options{
        timeout(time: 1, unit: 'HOURS')
        timestamps()
    }
    environment {
        UTILITY = load pwd() + 'path to /utils.groovy'
    }
    stages{
        stage('Build'){
            steps{
                sh "${UTILITY.functionX()}"
            }
        }
    }
}
我有一个名为utils.groovy的groovy文件

def functionX(){
}

def functionY(){
}

return this;
当我以这种方式调用functionX()时,我在控制台中看到了下面的错误

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method

您需要在脚本块中使用“Pipeline:Groovy”插件()中的“load”步骤。 ()

例:


在您的库层次结构中,
utils.groovy
位于哪里?它位于/lib/pipeline\u scripts/utils.groovy中。然而,我的管道脚本位于/lib/pipeline_scripts/utilities/Jenkinsfile.groovy中,在脚本块中执行语句确实需要Jenkins管理员的脚本批准,这是我们的技术顾问所禁止的。有没有其他方法可以像在脚本管道中那样在没有脚本块的情况下实现呢?我不太确定它实际上需要在脚本块内部,因为加载是作为插件“pipeline,groovy”的一个步骤引用的。我明天会做一些测试,我现在就让你做。你的解决方案现在运行良好。可能是因为这个插件
stages {
    stage ("load scripts"){
        steps {
            script {
                scripts=load "jenkins/scripts/loadScripts.groovy"
            }
        }
    }