手动触发的管道作业可以接受用户输入的参数吗?

时间:2019-07-09 18:47:56

标签: jenkins jenkins-pipeline

我有两个工作(工作1和工作2)。两者都使用相同的参数进行参数化,但是参数值不同,并且使用Active-Choice-Parameter(uno)插件进行设计。

我希望同时运行这两个作业,但是下面是确切的要求。

  1. 执行管道时,Job1将执行并提示用户输入参数(UI)。用户输入/选择值并触发其构建。

  2. 在Job1上完成构建后,系统将提示用户(批准)进行下一个Job2。用户单击“确定/继续”按钮进行批准;从而触发管道的Job2。 注意:我已经使用Groovy脚本的“输入”功能实现了这一点。

  3. Job1的参数值应该传递并显示在Job2中;但是,用户应该能够查看和修改Job2(UI)中任何参数的传递值。

注意:我可以使用Job1的“后期构建操作”上的“参数化触发器插件”传递参数值

问题陈述:

运行管道不会显示Job1或Job2的用户参数屏幕(UI),以便用户可以在管道运行期间输入/选择和更改Job1或Job2的参数。

注意:

我可以通过使用构建管道插件来克服问题陈述: 但是我不希望考虑此解决方案的原因是

  1. 我不知道如何注入可提示作业之间批准的常规管道脚本输入元素。

  2. 我已阅读到使用管道插件比使用构建管道插件更具优势

下面是Groovy脚本(管道脚本)

    agent any   //agent specifies where the pipeline will execute. 
    stages {
        stage ("build PROD") {  //an arbitrary stage name
            steps {
                build 'job1'    //this is where we specify which job to invoke.
            }
        }
        stage ("build DR") {            //an arbitrary stage name
            input{
                message "Press Ok to continue"
                submitter "user1,user2"
                parameters {
                    string(name:'username', defaultValue: 'user', description: 'Username of the user pressing Ok')
                    }
            }
            steps { 
                echo "User: ${username} said Ok."
                build 'job2'    //this is where we specify which job to invoke.
            }
        }
    }
} 

任何解决方案都会有很大帮助。谢谢。

2 个答案:

答案 0 :(得分:0)

您是否有分开工作的理由?我要做的是重新评估您的工作流程,看看将这些工作合并到一个管道中是否更有意义。

答案 1 :(得分:0)

您只需使用参数https://jenkins.io/doc/book/pipeline/syntax/#parameters

然后,您将拥有默认的用户界面,这比自定义常规代码更简单。