Jenkins动态参数在阶段中不可见

olhwl3o2  于 11个月前  发布在  Jenkins
关注(0)|答案(1)|浏览(145)

我在Jenkins的构建中使用了动态参数,我有几个动态参数,除了一个参数外,其他参数都很好用,我把它归结为下面的例子。

properties([parameters([

        choice(name: 'VERSION',
                choices: 'current\nprevious',
                description: "============ Select current or previous build ============"),

        [$class              : "DynamicReferenceParameter",
         choiceType          : "ET_FORMATTED_HTML",
         name                : "PREVIOUS_VERSION",
         referencedParameters: "VERSION",
         script              : [$class: "GroovyScript", script: [sandbox: true, script: '''
             if ( VERSION.equals("previous") ) {
                 return "<input name='nexus_version_number' value='' class='setting-input' type='text'>"
             } else {
                 return "not applicable"
             }
            ''']]]
])])
pipeline {
    environment {
        // Variables in the properties section above are not visible in the stages section below.
        // This environment section bridges those scopes to make the values visible.
        VERSION_INPUT = "${params.VERSION}"
        PREVIOUS_VERSION_INPUT = "${params.PREVIOUS_VERSION}"
    }
    stages {
        stage('Initialize') {
            steps {
                echo "######## Initialize ########"
                script {
                    println ENV_INPUT
                    println AZ_INPUT
                    println VERSION_INPUT
                    println PREVIOUS_VERSION_INPUT
                }
            }
        }
    }
}

字符串
因此,当“版本”下拉菜单设置为“当前”时,文本字段(通过HTML)实际上是一个标签。但当它设置为“先前”时,文本字段看起来很好。
我的经验(或信念,无论对错)是,“properties”块中的变量不在“stages”的作用域中。但我可以使用“environment”块来弥补这一差距,并复制这些值。(也许这是一种浪费,也许不是。)
但是无论如何,对于“初始化”阶段的4个println,我只得到了前3行的输出。第4行(对于PREVIOUS_VERSION_INPUT)根本就没有显示出来。
我已经在其他UI控件、层叠和引用等方面采用了这种方法,没有任何问题,除了“文本字段”。
那么文本字段的名称(PREVIOUS_VERSION与“nexus_version_number”)是什么呢?我做错了吗?我没有得到任何错误。我只是没有得到填充到字段“PREVIOUS_VERSION_INPUT”中的值。
谢谢你,
Dave.
我试过使用不同的控件(而不是“single_select”),比如单选按钮和复选框,但没有任何明显的区别。我似乎无法获取该字段的值。

93ze6v8z

93ze6v8z1#

您只需要将输入标记的name属性更改为value
正确的输入标记应该是:

return "<input name='value' value='' class='setting-input' type='text'>"

字符串
另外,如果你也想捕获Not Applicable,那么你需要将其定义为禁用的输入字段:

return "<input disabled name='value' value='Not Applicable' class='setting-input' type='text'>"


请注意,脚本中接收的值将有一个尾随的,,您需要在脚本中修剪它。

相关问题