当前位置: 首页 > 面试题库 >

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

劳高爽
2023-03-14
问题内容

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

我尝试使用python运行html" target="_blank">示例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这样做是一种更好的方法,其中脚本可以通过在参数值之前指定参数名称来获取多个参数,而不必考虑其顺序。您可以阅读有关将getopt用于此参数传递方法的信息

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

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

Jenkins工作参数GUI

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

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

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



 类似资料:
  • 本章将讨论与GUI及交互相关的话题:canvas、鼠标事件、键盘事件,并以一个小游戏Life结束本章内容。

  • 我在使用JavaFX和线程时遇到问题。基本上我有两个选择:使用或。据我所知,应用于简单/简短的任务,而应用于较长的任务。然而,我不能使用它们中的任何一个。 当我调用时,它必须在任务执行过程中弹出一个验证码对话框。在使用任务时,它忽略了我显示新对话框的请求。。。它不允许我创造一个新的舞台。 另一方面,当我使用,它允许我显示一个对话框,但是,程序的主窗口会冻结,直到显示弹出对话框。 我需要任何解决办法

  • 在上一章中,我们创建了一个示例RMI应用程序。 在本章中,我们将解释如何创建RMI应用程序,其中客户端调用显示GUI窗口(JavaFX)的方法。 定义远程接口 在这里,我们使用名为animation()的方法定义一个名为Hello的远程接口。 import java.rmi.Remote; import java.rmi.RemoteException; // Creating Remote

  • 我有一个交互式经纪人[IB]帐户,正在使用IB API用python制作一个自动交易系统。1.0版即将进入测试阶段。 我正在考虑为它创建一个GUI,这样我就可以实时观察各种自定义指标并调整交易参数。这一切(IB TWS/IB Gateway和我的应用程序)都是在我本地的windows 10 pc上运行的(如果方便的话,我可以在Ubuntu上运行),目前只有启动配置文件可以调整参数,然后在控制台窗口

  • 问题内容: 创建多处理/ GUI编码系统的最佳方法是什么? 我想为互联网社区创建一个场所,以找到有关如何在python中使用该模块的示例。 我已经在互联网上看到了几个简单的全局函数处理过程的小例子,这些过程在一个主模块中被调用,但是我发现这很少会轻易地转化为任何人实际上对GUI所做的任何事情。我认为许多程序将具有在单独的过程中作为对象方法使用的功能(可能是其他对象的集合等),也许单个GUI元素将具

  • 问题内容: 我在tkinter的gui上工作时,对于事件处理程序的运行顺序有些困惑。如果运行上面的代码,您将希望看到… 1)编辑文本窗口小部件会触发事件处理程序,但似乎会在不注册实际更改的情况下将其触发,2)即使清除了文本窗口小部件(即继续按BackSpace键),它似乎仍具有一个字符长度的字符串, 3)尽管数据来自上一个事件,但在触发NEXT事件触发器时,输出窗口小部件仅接收其更新。 这是绑定在