是否可以在Jenkins开始的流浪盒中运行测试套件?

时间:2014-01-10 13:40:12

标签: python jenkins continuous-integration virtual-machine vagrant

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

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

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

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

2 个答案:

答案 0 :(得分:1)

这当然是可能的,我们有一个非常相似的设置。

收集结果

为了收集测试结果,您可以利用Vagrant's synced folders,即在与主机同步的目录中运行VM上的测试(在这种情况下Jenkins正在运行)。

报告测试是否成功

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

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

首先,我们使用Grunt收集结果。我们刚刚生成了xunit XML报告(然后我们将其作为构建后的操作发布)。请注意,我们--force这样即使我们测试失败,也会收集结果。然后,我们使用npm test运行测试。 npm test进程的退出代码将是用于Jenkins作业的退出代码,因此如果失败,那么Jenkins作业就会出现。

答案 1 :(得分:0)

有一堆Jenkins插件专门用于处理这种情况。

特别是,Jenkins有一个从属执行器的基本概念,它处理文件的复制,远程触发和收集结果(这实际上是Jenkins的核心功能 - 处理运行大量数据的管理开销)许多机器上的预定任务)。除了启动从属机器(在您的场景中配置了Vagrant)并告诉Jenkins您的构建应该在该特定的从属服务器上运行之外,您不必执行任何其他操作。

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

https://wiki.jenkins-ci.org/display/JENKINS/Distributed+builds