groovy.lang.MissingPropertyException-读取输入-Jenkinsfile

时间:2019-03-26 16:15:48

标签: groovy jenkins-pipeline jenkins-groovy

下面是在舞台视图中选择Git存储库的Jenkinsfile(脚本化管道)代码段:

            userInput = input(id: 'userInput',    
                                message: 'Do you want to build?',    
                                parameters: [
                                                [$class: 'ChoiceParameterDefinition', choices: "repo_1\nNone", name: 'Env']
                                            ]  
                            )


            if (userInput.Env == "repo_1") {
                print 'selected repo_1'
            }

要求用户选择存储库,然后单击Proceed

单击Proceed按钮时,詹金斯会抛出错误:

groovy.lang.MissingPropertyException: No such property: Env for class: java.lang.String

仅允许repo_1

进行手动构建

其余的存储库应该是自动触发的

编辑:

进行以下更改后,

node('worker_node'){

    def userIdCause = currentBuild.getBuildCauses('hudson.model.Cause$UserIdCause')
    def manualBuild =  userIdCause.size()

    stage("Auth-build") {

            timeout(2) {
                if (manualBuild) {

                    userInput = input(id: 'userInput',    
                                    message: 'Please select the repository',    
                                    parameters: [
                                                    [$class: 'ChoiceParameterDefinition', choices: "repo_1\nNone", name: 'Env']
                                                ]  
                                )

                    if (userInput == "None") {

                        error('Error output')
                    }
                    repositoryName = 'repo_1'
                }else if( !manualBuild && (repositoryName == 'repo_1')){

                    error('error output')
                }
            }
        }
}

点击BuildNow后我没有得到UI,我必须遵循以下过程:

here


1)为什么userInput.Env给出缺少的属性异常错误?

2)input() api需要一分钟的时间来呈现输入向导。我们可以优化吗?

1 个答案:

答案 0 :(得分:1)

  1. No such property: Env for class: String-我相信input函数已经返回了单个输入的值。
  2. 在您的情况下,input定义非常简单,并且不包含任何代码(仅是常量)- 没有什么要优化的。在其他地方寻找时间消费者。