当前位置: 首页 > 知识库问答 >
问题:

Jenkins |在groovy脚本中使用来自导入java类的方法

史烨
2023-03-14

我希望能够通过java类使用Jenkins插件的方法

只是为了指出我不是一个开发者或一个时髦的/java专家——很高兴学习!

我的方法所属的java类是com。云蜂。詹金斯。插件。比特桶。BitbucketSCMNavigator

从这里我想使用方法getRepoOwner()

我所做的是设置导入并定义对类的新调用:

import com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMNavigator

def bbSCMNav = new BitbucketSCMNavigator()

当我运行此命令时,会出现以下错误:

org.codehaus.groovy.runtime.metaclass.MethodSelectionException: Could not find which method <init>() to invoke from this list:
  public com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMNavigator#<init>(java.lang.String)
  public com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMNavigator#<init>(java.lang.String, java.lang.String, java.lang.String)

我已经搜索了上面的错误找不到哪个方法

我发现这张票找不到哪种方法

我说我不是开发人员,groovy和java对我来说都是比较新的,但我很高兴能理解是否有人能给我指出正确的方向

本练习的目标是在构建的运行时使用该方法来获取getrepowner()的输出,并在变量中使用该方法来构造URI

这个问题似乎与我调用Jenkins插件(thinBackup)的内部方法类似

但我没有使用maven或pom。这里是xml

干杯


共有1个答案

松钟展
2023-03-14

此错误找不到哪种方法

几乎所有内部jenkins类都可以在groovy中使用。

在您的情况下,BitbucketSCMNavigator没有默认构造函数。它有一个带一个字符串参数的构造函数。检查这条线

我可以用另一个内部类org复制您的错误。詹金西。插件。工作流程。cps。CpsGroovyShellFactory:

node {

   stage('internal') {
      org.jenkinsci.plugins.workflow.cps.CpsGroovyShellFactory obj = 
      new org.jenkinsci.plugins.workflow.cps.CpsGroovyShellFactory();
   }

}

哈得逊。远程处理。ProxyException:org。科德豪斯。棒极了。运行时。元类。MethodSelectionException:找不到哪个方法

但是,回顾这个类CpsFlowExecution,我可以看到CpsGroovyShellFactory没有默认构造函数。它有一个带一个参数的构造函数:CpsGroovyShellFactory(this)

所以,如果我用一个参数实例化构造函数,没有错误出现。

node {

   stage('internal') {
      org.jenkinsci.plugins.workflow.cps.CpsGroovyShellFactory obj = 
      new org.jenkinsci.plugins.workflow.cps.CpsGroovyShellFactory(null);
   }

}
 类似资料:
  • 在我的Jenkins构建中,我有一个Groovy脚本(因为我使用的是管道插件),在这个脚本中,我试图使用OkHttpClient进行API调用。 我从这里获得了以下葡萄代码: 为此,我得到: 知道有什么问题吗? 在Jenkins管道脚本中运行时,Grape不能检索包吗?

  • 我正在构建一个jenkins管道,作业可以由远程触发。我需要知道哪个IP触发了作业。所以我有一个小Groovy脚本,它返回远程IP。使用EnvInject-plugin,我可以轻松地在正常的自由式作业中使用这个变量,但是我如何在管道中使用它?我不能将EnvInject-plugin与管道插件一起使用:( 这是获取IP的小脚本:

  • 问题内容: 我是Jenkins中使用的Groovy脚本的新手。我的问题是,我们如何根据作业名称和内部版本号获取作业的时间戳? 示例 :我想获取“ MyDeployJob”(JobName)的时间戳,并获取BuildNumber-105的时间戳。 我尝试使用方法方法,但无法正常工作。另外,我发现环境变量具有时间戳,但是我无法弄清楚如何使用Groovy Script获取细节。请帮助。 提前致谢。 问题

  • 问题内容: 我有以下内容: 作为全球描述共享库创建这里。没什么特别的,文件夹中的一个脚本名为,可以尝试-工作。图书馆被称为 名为 调用的管道脚本正在调用 现在,当我像这样运行构建时,出现以下错误: 错误:找不到库的任何定义[myOneLib] 但是当我简单地将行移动到所有工作的顶部时。 所以我的问题是如何在导入/包含的脚本中使用?还是有其他方法可以指定全局库? 很少有其他注释:并且都在同一个git

  • 问题内容: 我想将“ $ WORSKPACE”变量用于jenkins脚本调用的常规文件。但是在SO上找到的所有解决方案都失败了: 我得到的消息:脚本不允许使用groovy.lang.GroovyObject方法setProperty java.lang.String java.lang.Object(JenkinsHelper.name)。管理员可以决定是批准还是拒绝此签名。 对设置为允许Jenk

  • 我有一个SoapUI项目和一个外部自定义Java实用程序库,这些实用程序库是我为在Groovy脚本中使用而编写的。 在Java库中,我有一个特定的实用程序类,它具有用于在groovy脚本上下文中更改属性值的实用程序方法。使用此类,我可以在groovy脚本文件中执行以下操作: > 但是,我希望能够在不使用import语句的情况下编写该脚本。有没有一种方法可以设置我的SoapUI项目来自动将这个类导入