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



