【问题标题】:Can Jenkins handle an gui/non-gui interactive python or java program?Jenkins 可以处理 gui/非 gui 交互式 python 或 java 程序吗?
【发布时间】:2013-06-18 20:27:59
【问题描述】:

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

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

编辑:目前将 Jenkins 作为服务运行。或者有没有人推荐的好插件,或者它是我创建 python 脚本的方式?

偏好: 我更喜欢使用 Python,因为它有点轻量级,但如果人们使用其他语言取得成功,我可以组成。

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

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

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

【问题讨论】:

    标签: python jenkins jenkins-plugins user-interaction build-pipeline


    【解决方案1】:

    抱歉,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 会将值 MyName 传递给 interactivescript.sh 提供给用户的第一个交互式提示.这样做的问题是您只能将值传递给第一个交互式提示。

    Jenkins 作业参数 GUI

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

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

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

    【讨论】:

    • 我觉得不错!我可能会制作一个 python/shell 脚本,它将获取参数并将其写入文件,因为这些参数用于每个闭源产品中,并且它从文件中读取。我会告诉你我是怎么做的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2015-11-03
    相关资源
    最近更新 更多