作业失败时主动选择参数更改为字符串参数

问题描述 投票:0回答:1

我创建了一个参数化的 Jenkins 作业,它有两个主动选择的参数,第二个是反应性的(取决于第一个参数)。每个参数都使用 Groovy 脚本来生成它们的选择值。

问题是,每当作业失败时,这些参数就会更改或恢复为字符串参数。

您可以从图像中检查: 作业失败之前: 作业失败之前 作业失败后: 作业失败后

有关信息,管道如下:

pipeline {
    agent any
    parameters {
        string(name: 'Repository', defaultValue: '')
        string(name: 'Branch', defaultValue: '')
    }
    stages {
        stage('Input Validation') {
            steps {
                script {
                    if (!params.Repository || !params.Branch) {
                        error "Repository and Branch parameters must be selected!"
                    }
                }
            }
        }
    }
}

我使用了 Active Choices Jenkins Plugin 2.8.1 和 2.8.6,两者具有相同的行为。

可能是什么问题?

我尝试使用 Scriptler,而不是直接在 jenkins 作业配置中使用 groovy 脚本,但它有同样的问题。

jenkins jenkins-plugins jenkins-groovy
1个回答
0
投票

当您在 Jenkinsfile 中定义参数,然后运行作业(即执行该 Jenkinsfile)时,Jenkinsfile 中定义的参数将覆盖您在作业配置中手动执行的任何操作。

因为在 Jenkinsfile 中参数定义为

        string(name: 'Repository', defaultValue: '')
        string(name: 'Branch', defaultValue: '')

这解释了为什么作业运行后,参数是...字符串。

顺便说一句,无论作业成功还是失败,这种情况都会发生——需要的是它只是运行。

相反,尝试将参数定义为主动选择:

    parameters {
        activeChoice(
            name: 'Repository', 
            choiceType: 'PT_CHECKBOX',
            description: 'Choose repository to create the tool from',
            filterable: false,
            script: [
                $class: 'GroovyScript',
                fallbackScript: [ 
                    classpath: [], 
                    sandbox: false, 
                    script: '''return[""]''' ],
                script: [ 
                    script: '''return["bitbucket-scripts",]''', 
                    classpath: [], 
                    sandbox: false, 
                ]
            ]),

等等

© www.soinside.com 2019 - 2024. All rights reserved.