Jenkinsfile Groovy:使用 Gerrit 触发器

问题描述

目前我们有一个带有触发器块的 Jenkinsfile,如下所示,工作正常

triggers {
        gerrit customUrl: [''],gerritProjects: [[branches: [[compareType: 'PLAIN',pattern: "master"]],compareType: 'PLAIN',disableStrictForbiddenFiLeverification: false,pattern: 'main']],triggerOnEvents: [commentAddedContains('(?i)^(Patch Set [0-9]+:)?( [\\w\\\\+-]*)*(\\n\\n)?\\s*(run-jenkins)')]
    }

但是,我们希望触发器块仅针对特定作业填充。所以尝试接受的答案 how to add gerrit-trigger events inside Jenkins pipeline code,inside Jenkinsfile

def gmap = [
                $class: 'GerritTrigger',customUrl: '',triggerOnEvents: [
                    [commentAddedContains('(?i)^(Patch Set [0-9]+:)?( [\\w\\\\+-]*)*(\\n\\n)?\\s*(run-jenkins)')]
                ]
            ]
triggers {
        gerrit( env.JOB_NAME.equals('GerritJob') ? gmap : '')
    }

但是我收到了这个错误。知道如何修复吗?

java.lang.UnsupportedOperationException: must specify $class with an implementation of interface java.util.List
14:50:00    at org.jenkinsci.plugins.structs.describable.DescribableModel.resolveClass(DescribableModel.java:574)
14:50:00    at org.jenkinsci.plugins.structs.describable.DescribableModel.coerce(DescribableModel.java:473)
14:50:00    at org.jenkinsci.plugins.structs.describable.DescribableModel.buildArguments(DescribableModel.java:409)
14:50:00    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:329)
14:50:00    at org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate(DescribableModel.java:272)
14:50:00    at sun.reflect.GeneratedMethodAccessor1550.invoke(UnkNown Source)
14:50:00    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
14:50:00    at java.lang.reflect.Method.invoke(Method.java:498)
14:50:00    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
14:50:00    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
14:50:00    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
14:50:00    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
14:50:00    at org.codehaus.groovy.runtime.callsite.PojoMetaClassSite.call(PojoMetaClassSite.java:47)
14:50:00    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
14:50:00    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:87)
14:50:00    at org.jenkinsci.plugins.pipeline.modeldeFinition.Utils.instantiateDescribable(Utils.groovy:463)
14:50:00    at org.jenkinsci.plugins.pipeline.modeldeFinition.Utils$instantiateDescribable$6.callStatic(UnkNown Source)
14:50:00    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:56)
14:50:00    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:194)
14:50:00    at org.kohsuke.groovy.sandBox.impl.Checker$2.call(Checker.java:194)
14:50:00    at org.kohsuke.groovy.sandBox.GroovyInterceptor.onStaticCall(GroovyInterceptor.java:35)
14:50:00    at org.jenkinsci.plugins.scriptsecurity.sandBox.groovy.SandBoxInterceptor.onStaticCall(SandBoxInterceptor.java:186)
14:50:00    at org.kohsuke.groovy.sandBox.impl.Checker$2.call(Checker.java:192)
14:50:00    at org.kohsuke.groovy.sandBox.impl.Checker.checkedStaticCall(Checker.java:196)
14:50:00    at org.kohsuke.groovy.sandBox.impl.Checker.checkedCall(Checker.java:103)
14:50:00    at com.cloudbees.groovy.cps.sandBox.SandBoxInvoker.methodCall(SandBoxInvoker.java:17)
14:50:00  Caused: java.lang.IllegalArgumentException: Could not instantiate {gerritProjects={gerritProjects=[{branches=[{compareType=PLAIN,pattern=master}],compareType=PLAIN,disableStrictForbiddenFiLeverification=false,pattern=main}],triggerOnEvents=[@commentAddedContains(<anonymous>=(?i)^(Patch Set [0-9]+:)?( [\w\\+-]*)*(\n\n)?\s*(run-jenkins))]}} for com.sonyericsson.hudson.plugins.gerrit.trigger.hudsontrigger.GerritTrigger

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)