如何修复hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法签名

如何修复hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法签名,groovy,jenkins-pipeline,shared-libraries,Groovy,Jenkins Pipeline,Shared Libraries,我有两个管道,当我调用另一个共享库时,我得到了以下错误- hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法的签名:genric.call()适用于参数类型:()值:[] 可能的解决方案:wait()、any()、wait(long)、main([Ljava.lang.String;)、any(groovy.lang.Closure)、each(groovy.lang.Closure) 以下是我的两份文件

我有两个管道,当我调用另一个共享库时,我得到了以下错误-

hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法的签名:genric.call()适用于参数类型:()值:[] 可能的解决方案:wait()、any()、wait(long)、main([Ljava.lang.String;)、any(groovy.lang.Closure)、each(groovy.lang.Closure)

以下是我的两份文件

genric.groovy file
#!/usr/bin/env groovy
//import hudson.model.*
pipeline{
    agent any
    stages{
        stage('build-deploy'){
            steps{
                sh''' 
                cd /home/manish/Desktop/test/
                mkdir testing
                '''
             }
         }
     }
 }

 Jenkinsfile
 library identifier: 'genric.groovy@master', retriever:          modernSCM([$class: 'GitSCMSource', credentialsId: '', remote: 'https://github.com/mani1soni/jenkins-practice.git', traits: [[$class: 'jenkins.plugins.git.traits.BranchDiscoveryTrait']]])
 pipeline{
    agent any
    environment{
        REPO_PATH='/home/manish/Desktop'
        APP_NAME='test'
    }
    stages{
       stage('calling function'){
           steps{
               genric()
            }
        }
   }
}
如何解决


忽略环境字段genric.groovy中使用的语法错误,此文件应放在共享库repo的vars文件夹中,并遵循以下链接“定义自定义步骤”部分中描述的语法:


您必须重写以下内容:

vars/genric.groovy文件

call() {
    sh''' 
        cd /home/manish/Desktop/test/
        mkdir testing
    '''
}
詹金斯档案

 library identifier: 'genric.groovy@master', retriever:          modernSCM([$class: 'GitSCMSource', credentialsId: '', remote: 'https://github.com/mani1soni/jenkins-practice.git', traits: [[$class: 'jenkins.plugins.git.traits.BranchDiscoveryTrait']]])
 pipeline{
    agent any
    environment{
        REPO_PATH='/home/manish/Desktop'
        APP_NAME='test'
    }
    stages{
       stage('calling function'){
           steps{
               genric()
            }
        }
   }
}

如果它已经在vars文件夹中,那么您应该遵循允许在groovy脚本上编写任何内容的语法,例如:def call(String name=“World”){echo(“Hello,${name}”)}在Dilip共享的链接中,它解释了您可以将vars文件夹与单个文件一起使用来定义步骤或定义整个管道定义(“定义声明性管道”部分。不能混合使用这两个部分。