Jenkinsfile 主动选择参数

geo*_*agi 2 jenkins jenkins-pipeline

我如何在多分支管道 jenkinsfile(declerative) 中使用这个 dsl 脚本?

parameters {
        activeChoiceParam('States') {
            description('Select a state option')
            filterable()
            choiceType('SINGLE_SELECT')
            groovyScript {
                script('["Sao Paulo", "Rio de Janeiro", "Parana:selected", "Acre"]')
                fallbackScript('return ["ERROR"]')
            }
        }
        activeChoiceReactiveParam('Cities') {
            description('Active Choices Reactive parameter')
            filterable()
            choiceType('CHECKBOX')
            groovyScript {
                script('''
if (States.equals('Sao Paulo')) {
    return ['Barretos', 'Sao Paulo', 'Itu'];
} else if (States.equals('Rio de Janeiro')) {
    return ['Rio de Janeiro', 'Mangaratiba']
} else if (States.equals('Parana')) {
    return ['Curitiba', 'Ponta Grossa']
} else if (States.equals('Acre')) {
    return ['Rio Branco', 'Acrelandia']
} else {
    return ['Unknown state']
}
                       ''')
                fallbackScript('return ["Script error!"]')
            }
            referencedParameter('States')
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我在 jenkinsfile 中使用此脚本时,出现此错误:

WorkflowScript:23:构建参数定义不能有块@第 23 行,第 5 列。 activeChoiceParam('States') { ^

WorkflowScript:32:构建参数定义不能有块@第 32 行,第 9 列。 activeChoiceReactiveParam('Cities') { ^

2 错误

at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1085)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:603)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:131)
at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:125)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:560)
at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:521)
at org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:325)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Run Code Online (Sandbox Code Playgroud)

完成:失败

Kar*_*ter 5

在 Jenkins Domain-Specific-Language (DSL) 期间在声明性 Jenkinsfiles 中使用 Active Choices Plugin 时会发生此错误。如开发人员所述,这不受支持。

整个插件安排更改所有权并留下充满垃圾邮件的可怕过时的 wiki 页面,导致在数十个地方搜索相关信息(包括“谢谢”/“ping”-垃圾邮件评论部分)时可能会浪费大量时间。