Continuous integration 如何将Vagrant与Jenkins结合起来,形成完美的持续集成环境?

Continuous integration 如何将Vagrant与Jenkins结合起来,形成完美的持续集成环境?,continuous-integration,jenkins,vagrant,Continuous Integration,Jenkins,Vagrant,您有一个需要运行一些软件需求的项目(例如:特定版本的Apache、PHP、MySQL数据库实例和其他一些软件) 您已经发现,因此您的虚拟环境已全部设置完毕。您可以使用配置文件和食谱创建框 您还了解了连续集成系统的优势,例如 现在,您希望将这两个世界(Vagrant和Jenkins)结合起来,以获得完美的持续集成环境。更具体地说,您不希望在运行Jenkins的机器上安装项目所需的软件,但希望使用Vagrant提供的虚拟环境定期在其上构建项目。CI软件(Jenkins)将为您构建Vagrant bo

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

您已经发现,因此您的虚拟环境已全部设置完毕。您可以使用配置文件和食谱创建框

您还了解了连续集成系统的优势,例如

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


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

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

  • 您当前的jenkins用作主CI(可能由用户jenkins启动)
  • 在同一台机器或另一台机器上创建另一个用户以作为jenkins从属模式工作
    • jenkins slave可以从jenkins master调用,它可以使用不同的用户,比如拥有vagrant权限和环境的vagrant,因此不会干扰原来的jenkins master server
    • 创建您的基本漫游框,然后可以重用它以加快部署速度
  • 大部分安装信息(包)可以由puppet(或chef)管理,以加载到您的vm盒中
  • 也许你们可以看看,它可以在飞行中创造流浪者的盒子

    以下是我的建议指南。

    您可以尝试当前支持Jenkins CD 1.532.3的


    您可以在

    上看到该插件的演示。我建议您使用Hashicorp Packer为开发人员构建您的“漫游”框,然后使用它还可以输出Docker、AWS或OpenStack映像,您可以在CI系统上运行这些映像。Vagrant是一个非常棒的工具,但是对于CI系统来说,虚拟机的开销可能会有点高,从而使它们不断地上下旋转,特别是如果您需要非常快速的反馈的话

    在以前的客户机上,我们基本上用系统启动了一次流浪机器,然后在这些虚拟机内部运行Docker/virtualenv构建,当出现重大升级或环境运行不正常的问题时,我们会定期销毁它们


    此外,您的Jenkins安装程序是一个“漫游框”,因此您可以在多个平台上运行此CI环境,因为它们之间存在很多差异。您是否创建了这样的环境?Docker和Jenkins的组合已经众所周知,但是,它不足以满足Windows环境,在这种情况下,唯一的好选择,IMO,是Vagrant+Jenkins。有一些方面需要考虑,例如,我们真的需要奴隶,在什么情况下,或者我们可以使用单服务器来创建每个项目的随需应变构建环境(在许多公司中,只有很少的项目在不断地建立,多数是很少建立)。或者我们应该在重复数据消除系统上使用该插件来减少磁盘占用。该插件不支持Jenkins 1.490以上,因此这是一个很大的限制:-(也不支持从机上运行的vagrant:(是的,但是您必须自己处理VM的所有生命周期(在作业结束时创建、销毁或不创建…)。该插件背后的想法是,该插件为您实现这一点,然后您可以专注于您的主要目的:将VM用作隔离容器。所述插件存在一些问题,这些问题尚未解决(),开发在一年前就停止了。不建议这样做。按需运行vagrant实例来进行构建听起来是正确的。如果这个插件仍然无法正常工作?如果我可以问一下,你是否以独立用户的身份运行jenkins?如果是的话,你是如何提供对vagrant的访问权限的?谢谢,只要vagrant安装正常放在系统路径上。框本身通常加载到当前用户的主目录中,但您可以使用环境变量覆盖vagrant home。我们将所有这些结合在一起,并使框拉与构建过程的特定版本部分结合在一起,以便缓存一次,然后重新使用。您的链接被意外断开如果有人对断开的链接感兴趣,这里有一份