我有一些硬件组件希望以半自动方式进行测试。这将涉及类似于以下的程序步骤:

  • 提示用户将信号 A 连接到连接器 J1
  • 用户确认到位后,自动检测信号检测成功

  • 我有使用 bash、python 等编写此类测试的经验。我还使用 Jenkins 来管理构建和自动化测试。我想做的(如果可能的话)是以某种方式将两者结合起来,并使用 Jenkins 来管理在测试计算机上运行交互式脚本。这将使我能够利用 Jenkins 的能力,在测试计算机上始终如一地生成脚本,并无限期地存档工件和控制台输出历史记录。我不确定的部分是如何允许用户与正在进行的 Jenkins 作业进行交互。有没有人有这方面的经验或知道是否可能?
    这是在 Linux 系统上,所以也许我可以在用户可以附加到的“屏幕” session 中运行它?
    有没有更好的工具可以用于我没有考虑过的?
    编辑1:
    我确实听说过 "Remote Terminal Access Plugin" ,但这不允许与 Jenkins 构建直接交互。
    到目前为止,我发现的最好的潜在解决方案是启动一个启用日志记录的“屏幕” session ,并让用户与从站上的这个 session 进行交互:
    screen -S test -d -m -L ./myscript.sh
    PID=`screen -list | grep test | awk '{print $1}' | sed 's/\..*//g'`
    
    #This will show the output of the screen session in the jenkins console:
    tail -f screenlog.0 --pid=$PID
    
    然后在从站,用户可以像这样附加到这个屏幕:
    screen -r test
    
    这种方法的缺点是如果出现故障,Jenkins 不会得到反馈。

    最佳答案

    您基本上需要某种方式来暂停构建直到用户交互。我认为目前还没有这样的公共(public)插件,但是您可以检查某个文件是否存在或其内容并循环 sleep ,直到满足您的条件。或者您可以改为检查远程 URL。当用户准备好时,您更改文件/url,您的作业会检测到并继续。

    我认为这样的插件不难编写,但目前还没有……除了您是否看过 jbpm 插件 ?它必须在复杂的场景中可用。

    关于linux - 有没有办法使用 Jenkins 运行交互式测试脚本(并让用户实际与之交互)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16021333/

    10-11 03:41
    查看更多