86

您有一个项目需要运行一些软件要求(例如:特定版本的 Apache、PHP 版本、MySQL 数据库实例和一些其他软件)。

您已经发现了Vagrant,因此您的虚拟环境已全部设置完毕。您可以从配置文件和说明书中创建盒子。

您还了解了Jenkins等持续集成系统的优势。

现在您想结合这两个世界(Vagrant 和 Jenkins)来获得完美的持续集成环境。更具体地说,您不希望在运行 Jenkins 的机器上安装项目所需的软件,而是希望使用 Vagrant 提供的虚拟环境在其之上定期构建您的项目。CI 软件 (Jenkins) 将为您构建 Vagrant box,并在其上构建和测试您的项目。

您将如何设置您的环境来实现这一目标?

4

3 回答 3

36

这是构建系统的一个很好的解决方案,我的建议:

  1. 您当前的 jenkins 作为主 CI 工作(可能由用户 jenkins 启动)
  2. 在同一台机器或另一台机器上创建另一个用户作为詹金斯从机模式工作
    • jenkins slave 可以从 jenkins master 调用,它可以使用不同的用户,如 vagrant,对 vagrant 有权限和环境,因此不会干扰原来的 jenkins master 服务器
    • 创建您的基本 vagrant box,然后可以重复使用它来加速您的部署
  3. 大多数安装信息(包)可以由 puppet(或厨师)管理以加载到您的 vm 框中。

可能你可以看看veewee,它可以在飞行中创建 vagrant box。

这是使用 Jenkins CI 和 Vagrant 使 CI 更容易,我对此建议的指导。

于 2011-10-20T01:31:03.787 回答
12

你可以试试目前支持 Jenkins CD 1.532.3的Vagrant Plugin for Jenkins

你可以在http://unethicalblogger.com/2012/03/13/vagrant-plugin-in-action.html看到这个插件的演示

于 2012-04-09T19:00:34.100 回答
1

我个人建议使用 Hashicorp Packer 为开发人员构建 Vagrant 盒子,然后使用它来输出可以在 CI 系统上运行的 Docker 或 AWS 或 OpenStack 映像。Vagrant 是一个很棒的工具,但是虚拟机的开销对于 CI 系统来说可能会有点高,因为它会不断地上下旋转,特别是如果你想要真正快速的反馈。

在以前的客户中,我们基本上用系统启动 Vagrant 机器一次,然后在这些虚拟机中运行 Docker/virtualenv 构建,并在发生重大升级或环境行为不正确时定期销毁它们。

https://www.packer.io/docs/builders/openstack.html

于 2016-12-21T18:13:17.253 回答