【问题标题】:Jenkins Jira-Plugin Could not find matching constructorJenkins Jira-Plugin 找不到匹配的构造函数
【发布时间】:2017-12-13 14:34:55
【问题描述】:

我正在尝试通过 groovy 脚本配置 Jenkins Jira 插件,但出现错误

    WARNING: Failed to run script file:/var/jenkins_home/init.groovy.d/k_JiraPluginConfig.groovy
groovy.lang.GroovyRuntimeException: Could not find matching constructor for: hudson.plugins.jira.JiraSite(java.net.URL, java.net.URL, java.lang.String, java.lang.String, java.lang.Boolean, java.lang.Boolean, java.lang.Boolean, null, null, java.lang.Boolean)
    at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1732)
    at groovy.lang.MetaClassImpl.invokeConstructor(MetaClassImpl.java:1532)
    at org.codehaus.groovy.runtime.callsite.MetaClassConstructorSite.callConstructor(MetaClassConstructorSite.java:49)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235)
    at k_JiraPluginConfig.run(k_JiraPluginConfig.groovy:13)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:585)
    at jenkins.util.groovy.GroovyHookScript.execute(GroovyHookScript.java:136)
    at jenkins.util.groovy.GroovyHookScript.execute(GroovyHookScript.java:127)
    at jenkins.util.groovy.GroovyHookScript.run(GroovyHookScript.java:110)
    at hudson.init.impl.GroovyInitScript.init(GroovyInitScript.java:41)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
at hudson.init.TaskMethodFinder.invoke(TaskMethodFinder.java:104)
    at hudson.init.TaskMethodFinder$TaskImpl.run(TaskMethodFinder.java:175)
    at org.jvnet.hudson.reactor.Reactor.runTask(Reactor.java:282)
    at jenkins.model.Jenkins$5.runTask(Jenkins.java:1065)
    at org.jvnet.hudson.reactor.Reactor$2.run(Reactor.java:210)
    at org.jvnet.hudson.reactor.Reactor$Node.run(Reactor.java:117)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

这是我的 groovy 脚本的样子

import hudson.plugins.jira.JiraProjectProperty
import hudson.plugins.jira.JiraSite
import jenkins.model.*

def env = System.getenv()
def jenkins = Jenkins.getInstance()
JiraProjectProperty.DescriptorImpl config = jenkins.getExtensionList(JiraProjectProperty.DescriptorImpl.class)[0]

JiraSite jiraSite = new JiraSite(new URL(env.JIRA_URL),
                            new URL(env.JIRA_URL),
                            env.JIRA_USERNAME,
                            env.JIRA_PASSWORD,
                            true,
                            true,
                            true,
                            null, null, false)
jiraSite.setDisableChangelogAnnotations(false)
jiraSite.setTimeout(10)
jiraSite.setDateTimePattern('EEE, d MMM yyyy HH:mm:ss Z')
jiraSite.setAppendChangeTimestamp(true)
config.setSites(jiraSite)
config.save()

我从 Jira-plugin 的配置文件中派生出这段代码,该 XML 文件如下所示

<?xml version='1.0' encoding='UTF-8'?>
<hudson.plugins.jira.JiraProjectProperty_-DescriptorImpl plugin="jira@2.5">
  <sites>
    <hudson.plugins.jira.JiraSite>
      <url>https://jira.mycompany.com/</url>
      <useHTTPAuth>false</useHTTPAuth>
      <userName>Jenkins</userName>
      <password>{secretPassword}</password>
      <supportsWikiStyleComment>true</supportsWikiStyleComment>
      <recordScmChanges>true</recordScmChanges>
      <disableChangelogAnnotations>false</disableChangelogAnnotations>
      <updateJiraIssueForAllStatus>true</updateJiraIssueForAllStatus>
      <timeout>10</timeout>
      <dateTimePattern></dateTimePattern>
      <appendChangeTimestamp>true</appendChangeTimestamp>
    </hudson.plugins.jira.JiraSite>
  </sites>
</hudson.plugins.jira.JiraProjectProperty_-DescriptorImpl>

不确定我在这里缺少什么,任何帮助都会很明显。

更多细节

Jenkins 版本 - 2.9.3

Jira 版本 - 7.2.2

Jira 插件版本 - 2.5

Jira 插件回购 - https://github.com/jenkinsci/jira-plugin

提前致谢

【问题讨论】:

    标签: jenkins groovy jenkins-plugins jira-plugin


    【解决方案1】:

    您需要查看 JiraSite Constructor 并更新您的 groovy 脚本中的 JiraSite 构造函数调用以匹配它。 JiraSite 的构造函数如下所示

    JiraSite(URL url, URL alternativeUrl,
             String userName, String password,
             boolean supportsWikiStyleComment, boolean recordScmChanges, 
             String userPattern, boolean updateJiraIssueForAllStatus, 
             String groupVisibility, String roleVisibility, 
             boolean useHTTPAuth)
    

    因此,根据构造函数签名,您需要在 groovy 脚本中更新构造函数调用,如下所示:

    JiraSite jiraSite = new JiraSite(new URL(env.JIRA_URL), new URL(env.JIRA_URL),
                            env.JIRA_USERNAME, env.JIRA_PASSWORD,
                            true, true,
                            null, true,
                            null, null,
                            false)
    

    我假设 userPattern 不是必需的,所以给出为 null,您可以使用您需要的内容对其进行更新。那是您在构造函数调用中遗漏的参数

    希望对你有帮助

    【讨论】:

    • @anoop-philip 如果这有帮助,你能接受作为答案吗? :)
    • 谢谢,今天晚些时候我会检查并接受答案。
    猜你喜欢
    • 2019-02-05
    • 2020-01-14
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多