繁体   English   中英

是否可以在从詹金斯(Jenkins)开始的无业游民的盒子中运行测试套件?

[英]Is it possible to run a test-suite in a vagrant box started from Jenkins?

当前,我们的开发人员都使用VirtualBox VM的克隆,该克隆已配置了一组特定的软件,并且我们希望将Continuous Integration引入到我们的开发堆栈中。

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

  1. 克隆我们都用于开发的基本VM(因为它会经常更新)
  2. 启动此VM的实例
  3. 将脚本复制/下载到实例上
  4. 执行脚本,这将安装我们的开发环境并运行测试
  5. 收集测试结果
  6. 报告测试是否成功

我很确定我们可以使1-4工作,这是我们关心的步骤5和6。

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

当然有可能,我们已经建立了非常相似的设置。

收集结果

为了收集测试结果,您可以利用Vagrant的同步文件夹 ,即在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作业也会退出。

有很多Jenkins插件专门设计用来处理这种情况。

特别是,Jenkins具有从属执行程序的基本概念,并为您处理文件的复制,远程触发和结果的收集(这实际上是Jenkins的核心功能-处理运行大量计划任务的管理开销跨很多机器)。 除了启动从属计算机(在您的方案中由Vagrant提供)并告诉Jenkins您的构建应在该特定从属服务器上运行之外,您实际上不需要执行任何其他操作。

这是文档的相关入口点:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM