Как передать значения параметров Dynami c из Excel в декларативный конвейер Jenkins с помощью подключаемого модуля параметров активного выбора? - PullRequest
0 голосов
/ 14 июля 2020

Я хочу динамически подставить значения из Excel в параметры Jenkins . Я использую декларативный конвейер и сталкиваюсь с ошибкой (журналы ниже). Ниже приведен код.

Предложите решение или альтернативный способ передачи значений Dynami c.

def getProjectDetails() {
//   List value= ["\"Configuration generation\"","\"Integrity testing\""]
// def value = readFile("AutomationDetails.xlsx")

    def value=xlsread("C:\\Program Files(x86)\\Jenkins\\workspace\\SingleAutomationUI\\AutomationDetails.xlsx", 'sheet1')
                 return value
                }

    properties([ 
        parameters([
            [$class: 'ChoiceParameter', 
                choiceType: 'PT_SINGLE_SELECT', 
                description: 'Select an Automation suite to execute', 
                filterLength: 1, 
                filterable: true, 
                name: 'AutomationSuite', 
                randomName: 'choice-parameter-7601235200970', 
                script: [$class: 'GroovyScript', 
                fallbackScript: [classpath: [], 
                sandbox: false, 
                script: 'return ["ERROR"]'], 
                script: [classpath: [], 
                sandbox: false, 
                // script: 'return["Configuration generation","integrity testing","Automatic build upload","D400 to G500 configuration conversion tool"]' 
                // script: "return ${value}"
                 script: "return "+getProjectDetails()
                ]]], 
                
            [$class: 'DynamicReferenceParameter', 
                choiceType: 'ET_FORMATTED_HTML', 
                description: '', 
                name: 'Additional Details', 
                omitValueField: false, 
                randomName: 'choice-parameter-5633384460832175', 
                referencedParameters: 'AutomationSuite',
                script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: false, script: 'return ["ERROR"]'], script: [classpath: [], sandbox: false, 
                script: '''if(AutomationSuite.equals('Automatic build upload')){
                return '&nbsp;&nbsp; &nbsp;<label for="excelinput">Do you want to pass an excel input?</label><br/><input name="value" type="radio" id="Yes" name="excel" value="Yes"> <label for="Yes">Yes</label> &nbsp;&nbsp; &nbsp;  <input  name="value" type="radio" id="No" name="excel" value="No"><label for="No">No</label><br>'
                }'''
        ]]]
        ])
    ])

    pipeline {          
        agent {
            label 'abc' 
            }

        stages {
            stage ("build") {
                steps {
                    echo "${params.AutomationSuite}"
                     build job: 'JobConfigurationGeneration', parameters: [
                     string(name: 'AutomationSuite', value: "${params.AutomationSuite}")
                    ]
                }
            }
        }
    }

------------------------------------
Jenkins Logs
------------------------------------
org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: Required context class hudson.FilePath is missing
Perhaps you forgot to surround the code with a step that provides this, such as: node
        at org.jenkinsci.plugins.workflow.steps.StepDescriptor.checkContextAvailability(StepDescriptor.java:266)
        at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:263)
        at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:179)
        at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:122)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:20)
        at WorkflowScript.getProjectDetails(WorkflowScript:3)
        at WorkflowScript.run(WorkflowScript:24)
        at ___cps.transform___(Native Method)
        at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:86)
        at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:113)
        at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:83)
        at sun.reflect.GeneratedMethodAccessor376.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
        at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
        at com.cloudbees.groovy.cps.Next.step(Next.java:83)
        at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
        at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
        at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:129)
        at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:268)
        at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
        at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:185)
        at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:400)
        at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$400(CpsThreadGroup.java:96)
        at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:312)
        at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:276)
        at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:67)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)
        at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
        at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Finished: FAILURE

-----------------------------
...