目前,我们的开发人员都使用配置了一组特定软件的VirtualBox VM的克隆,我们希望将持续集成引入我们的开发堆栈。
我们正在考虑使用Jenkins,我们最好将其配置为执行以下操作:
我很确定我们可以让1-4工作,我们关注的是第5步和第6步。
这可以实现吗?如果是这样,怎么样?
答案 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