首页 > 解决方案 > Jenkins 声明式管道 - 从工作区中运行的命令的输出中动态填充输入步骤的选择

问题描述

我想创建一个提示用户选择 git 标签的输入步骤。为此,我想用返回的值填充一个下拉框git tag

这是我目前的管道:

pipeline {
    agent any
    stages {
        stage('My Stage') {
            input {
                message "Select a git tag"
                parameters {
                    choice(name: "git_tag", choices: TAGS_HERE, description: "Git tag")
                }
            }
            steps {
                echo "The selected tag is: ${git_tag}"
            }
        }
    }
}

我希望 TAGS_HERE 成为包含git tags命令给出的输出的变量或方法。

到目前为止,我已经尝试过:

我已经广泛搜索了一个解决方案,但我能找到的所有示例都通过专门使用脚本化的管道步骤或使用不依赖于工作空间的命令来避免这两个陷阱。

标签: jenkinsgroovyjenkins-pipeline

解决方案


通过改进@hakamairi 的答案,您可以执行以下操作:

pipeline {
    agent any
    stages {
        stage('My Stage') {
            steps {
                script {
                    def GIT_TAGS = sh (script: 'git tag -l', returnStdout:true).trim()
                    inputResult = input(
                        message: "Select a git tag",
                        parameters: [choice(name: "git_tag", choices: "${GIT_TAGS}", description: "Git tag")]
                    )
                }
            }
        }
        stage('My other Stage'){
            steps{
                echo "The selected tag is: ${inputResult}"
            }
        }
    }
}

推荐阅读