抱歉,Jenkins 不是交互式应用程序。它是为自动执行而设计的。
获取 Jenkins 作业(以及从该作业执行的所有内容)的输入的唯一可行方法是使用在作业开始之前填充的作业参数。诚然,用于参数输入的 Jenkins GUI 不是最好的,但它可以完成这项工作。一旦 Jenkins 作业在作业开始时收集了作业参数,它就可以在作业期间的任何时间将这些参数传递给它执行的任何东西(Python、shell 等)。要做到这一点,必须有两件事是真实的:
- 您需要在作业开始之前收集所有输入数据
- 无论您的工作调用什么(Python、shell 等)都需要能够以交互方式而不是通过命令行接收它们的输入。
如何获取程序的输入
一个设计良好的脚本应该能够简单地接受命令行上的参数:
./goodscript.sh MyName
将是最简单的方法,其中值MyName
将存储在$1
脚本的第一个参数中。后续命令行参数将在 variables$2
等中可用$3
。
./goodscript.sh -name MyName -age 30
将是一种更好的方法,脚本可以通过在参数值之前指定参数名称来获取多个参数,而不管它们的顺序如何。您可以阅读有关使用getopt进行这种参数传递方法的信息
上面的两个示例都假设goodscript.sh
编写得足够好,能够处理这些命令行参数。如果脚本没有显式处理命令行参数,那么做上面的事情是没有用的。
您可以将一些输出“管道”到一个交互式脚本,该脚本并非旨在显式处理命令行参数:
echo MyName | ./interactivescript.sh
将值传递给提供给用户MyName
的第一个交互式提示。interactivescript.sh
这样做的问题是您只能将值传递给第一个交互式提示。
Jenkins 作业参数 GUI
就像我上面说的,您可以使用 Jenkins GUI 来收集各种作业参数(下拉列表、复选框、文本输入)。我假设您知道如何使用参数设置 Jenkins 作业。如果没有,请在作业配置中单击“此构建已参数化”复选框。如果您不知道如何设置,那就是另一个问题,需要单独解释。
但是,一旦您的 Jenkins 作业预先收集了所有参数,您就可以在“执行 shell”步骤中引用它们。如果您使用的是 Windows,则将它们称为%PARAM_NAME%
,而对于 Linux,则称为$PARAM_NAME
.
解释你需要什么帮助:让你的脚本接受命令行参数,或者从詹金斯作业 GUI 传递这些命令行参数,我将进一步扩展这个答案