繁体   English   中英

Jenkins可以处理gui / non-gui交互式python或java程序吗?

[英]Can Jenkins handle an gui/non-gui interactive python or java program?

我想创建一个构建管道,开发人员需要在属性文件中设置一些内容,该属性文件使用前端GUI进行填充。

我尝试使用python运行示例CLI交互式脚本,该脚本只是询问名称并随后将其打印出来,但Jenkins只是等待了很长时间才被吊死。 我看到它要求输入,但是用户无法输入数据。

编辑 :当前正在运行Jenkins作为服务。或者有人推荐一个好的插件,或者它是我创建python脚本的方式吗?

偏好:我更喜欢使用Python,因为它有点轻巧,但是如果人们在使用其他语言方面取得了成功,我就可以使用。

使用GUI菜单填充数据会很酷,因为我可以使用选项框,下拉菜单并使其精美,但这不是必须的,CLI比我们当前的部署要好得多。

顺便说一句,在运行Python 2.7和Java 1.7的Windows 7笔记本电脑上运行所有这些操作

对不起这篇文章! 希望人们能帮助我!

抱歉,Jenkins不是交互式应用程序。 它是为自动执行而设计的。

获取Jenkins作业(以及从该作业执行的所有内容)的输入的唯一可行方法是使用在作业开始之前填充的作业参数。 诚然,用于参数输入的Jenkins GUI并不是最大的功能,但确实可以完成。 一旦Jenkins作业在作业开始时收集了作业参数,便可以将这些参数传递给作业期间随时执行的任何内容(Python,shell等)。 要做到这一点,必须有两件事是正确的:

  • 您需要在作业开始之前收集所有输入数据
  • 无论您的工作调用是什么(Python,shell等),都需要能够以交互方式而不是通过命令行接收其输入。

如何获得程序输入

设计良好的脚本应该能够简单地在命令行上接受参数:

./goodscript.sh MyName是最简单的方法,其中值MyName将存储在脚本的$1第一个参数中。 随后的命令行参数将在变量$2$3等中可用。

./goodscript.sh -name MyName -age 30将是一种更好的方法,该脚本可以通过在参数值之前指定参数名称来获取多个参数,而./goodscript.sh -name MyName -age 30考虑其顺序。 您可以阅读有关将getopt用于此参数传递方法的信息

上面的两个示例都假设goodscript.sh编写得足够好,能够处理那些命令行参数。 如果脚本未明确处理命令行参数,则执行上述操作将无济于事。

您可以将某些输出“管道”到一个不是专门用来显式处理命令行参数的交互式脚本中:
echo MyName | ./interactivescript.sh echo MyName | ./interactivescript.sh会将值MyName传递给interactivescript.sh提供给用户的第一个交互式提示。 问题是您只能将值传递给第一个交互式提示。

Jenkins工作参数GUI

就像我在上面说过的,您可以使用Jenkins GUI收集各种作业参数(下拉列表,复选框,文本输入)。 我假设您知道如何使用参数设置Jenkins作业。 如果没有,请在作业配置中单击“此构建已参数化”复选框。 如果您不知道如何设置,那就是另一个问题,需要单独解释。

但是,一旦您的Jenkins作业预先收集了所有参数,就可以在“执行shell”步骤中引用它们。 如果使用Windows,则将它们称为%PARAM_NAME% ,对于Linux将其称为$PARAM_NAME

说明您需要帮助的内容:让脚本接受命令行参数,或者从jenkins job GUI传递这些命令行参数,我将进一步扩展此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM