【问题标题】:Communication between booted Vagrant Virtual Machine and Jenkins已启动的 Vagrant 虚拟机与 Jenkins 之间的通信
【发布时间】:2015-06-26 05:00:51
【问题描述】:

我正在尝试创建一个虚拟机来运行一些测试并在完成后销毁。我正在使用 Jenkins 的“启动 Vagrant VM”选项来启动 VM,并使用 chef 来安装所需的包并在其中运行测试。在此 VM 中完成测试后,它(VM)有什么方法可以将结果传达回触发它的 Jenkins 中的作业?

我被这部分困住了。 我已经基于自定义的 vagrant box 实现了 VM 的启动,其中包含运行测试所需的所有基本软件包和软件。

【问题讨论】:

  • 测试完成后,您要制作并发布测试报告工件。然后,您必须设置一个 jenkins 触发器,该触发器将在测试报告可用时调用任务来销毁 VM。您有测试报告还是在某处发布?你怎么知道现在测试已经结束了?
  • 测试完成后,我们生成包含测试结果的 JTL 文件,并尝试解析该文件以了解是否有任何故障。我们将其转换为 html 页面以提高可读性。测试完成后销毁 VM 的步骤就位。
  • 您可能还想在销毁机器之前保存测试结果。您应该将工件复制到安装在 vagrant box 中的“共享存储”。默认情况下,虚拟机文件夹/vagrant 与 Vagrantfile 的父目录同步。从詹金斯,做一个轮询检查让我们说每一秒:如果 Vagrantfile 的父目录包含测试输出报告文件然后触发销毁任务(当然是在复制结果之后):)
  • 是的,我知道 Vagrant 的同步文件夹,你说的确实有道理(不这么认为)。我只需要弄清楚如何对特定目录进行轮询。

标签: jenkins vagrant chef-infra virtual-machine jenkins-plugins


【解决方案1】:

首先感谢 Markus,如果他留下了答案,我一定会接受。

我编辑了 Vagrantfile 以将同步文件夹添加到 config.vm.synced_folder "host/","/guest"。 它会在虚拟机中创建来宾文件夹,而我们在主机系统上创建的主机文件夹也会反映在虚拟机上。

然后我按照 Markus 的建议所做的只是从 Jenkins(使用 Files Found 触发器插件)到某个文件夹进行轮询,以搜索一些特定的文件,希望从 VM 中看到/通信。

在 VM 中,每当测试完成时,我只需将结果放在主机文件夹中,它就会自动反映在我的本地机器中,在 Jenkins 正在轮询的文件夹中,它会构建正在轮询的项目文件夹和ta dahhh ....!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 2014-04-12
    • 2021-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多