Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有可能在从詹金斯开始的流浪者盒子中运行测试套件吗?_Python_Jenkins_Continuous Integration_Virtual Machine_Vagrant - Fatal编程技术网

Python 有可能在从詹金斯开始的流浪者盒子中运行测试套件吗?

Python 有可能在从詹金斯开始的流浪者盒子中运行测试套件吗?,python,jenkins,continuous-integration,virtual-machine,vagrant,Python,Jenkins,Continuous Integration,Virtual Machine,Vagrant,目前,我们的开发人员都使用VirtualBox虚拟机的克隆,该虚拟机配置了一组特定的软件,我们希望将持续集成引入我们的开发堆栈中 我们正在考虑使用Jenkins,最好将其配置为执行以下操作: 克隆我们用于开发的基本VM(因为它经常更新) 启动此VM的一个实例 将脚本复制/下载到实例上 执行脚本,它将安装我们的开发环境并运行测试 收集测试结果 报告测试是否成功 我很确定我们可以让1-4工作,这是我们关心的第5步和第6步 这是可以实现的吗?如果是这样的话,怎么做?当然有可能,我们已经有了一个非常类似

目前,我们的开发人员都使用VirtualBox虚拟机的克隆,该虚拟机配置了一组特定的软件,我们希望将持续集成引入我们的开发堆栈中

我们正在考虑使用Jenkins,最好将其配置为执行以下操作:

  • 克隆我们用于开发的基本VM(因为它经常更新)
  • 启动此VM的一个实例
  • 将脚本复制/下载到实例上
  • 执行脚本,它将安装我们的开发环境并运行测试
  • 收集测试结果
  • 报告测试是否成功
  • 我很确定我们可以让1-4工作,这是我们关心的第5步和第6步


    这是可以实现的吗?如果是这样的话,怎么做?

    当然有可能,我们已经有了一个非常类似的设置

    收集结果

    为了收集您可以利用的测试结果,即在与主机同步的目录(本例中Jenkins正在运行的目录)中对VM运行测试

    报告测试是否成功

    我相信你知道Jenkins进程只需要退出非零就可以失败。我们设置测试的方式如下:

    vagrant ssh -c 'cd /synced-folder/ && grunt test-report --force && npm test'
    

    首先,我们使用数据收集结果。我们刚刚生成了XUnitXML报告(然后作为构建后操作发布)。请注意,我们
    ——强制执行
    ,这样即使测试失败,我们也可以收集结果。然后,我们使用
    npm test
    运行测试。
    npm测试
    过程的退出代码将是用于Jenkins作业的代码,因此如果失败,那么Jenkins作业也将失败。

    有一组Jenkins插件正是为了处理这种情况而设计的

    特别是,Jenkins有一个从执行器的基本概念,它负责为您复制文件、远程触发和收集结果(这实际上是Jenkins的核心功能——处理跨多台机器运行大量计划任务的管理开销)。除了启动从机(在您的场景中提供了Vagrant)并告诉Jenkins您的构建应该在特定的从机上运行之外,您实际上不需要做任何事情

    以下是文档的相关入口点: