首页 文章

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

提问于
浏览
80

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

您已经发现Vagrant,因此您的虚拟环境都已设置完毕 . 您可以从配置文件和烹饪书中创建框 .

您还了解了持续集成系统的优点,例如Jenkins .

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

您将如何设置环境来实现此目标?

3 回答

  • 12

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

    • 您当前的jenkins作为主CI(可能由用户jenkins启动)

    • 在同一台机器或另一台机器上创建另一个用户以作为jenkins从属模式

    • jenkins slave可以从jenkins master调用,它可以使用不同的用户,比如有流浪者权限和环境的vagrant,因此它不会干扰原来的jenkins主服务器

    • 创建您的基本流浪者框,然后可以重复使用它来加速部署

    • 大多数安装信息(包)可以由木偶(或厨师)管理,以便加载到您的虚拟机框中 .

    也许你可以看看veewee,它可以在飞行中创建流浪盒 .

    这是我对这个建议的指导原则的Make CI easier with Jenkins CI and Vagrant .

  • 32

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

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

  • 1

    就个人而言,我建议使用Hashicorp Packer为开发人员构建您的Vagrant框,然后使用它来输出您可以在CI系统上运行的Docker或AWS或OpenStack图像 . Vagrant是一个非常棒的工具,但是对于CI系统来说,VM的开销可能会有点高,不断上下调整它们,特别是如果你想要快速反馈的话 .

    在以前的客户端,我们基本上使用系统启动Vagrant机器一次,然后在这些VM内部运行Docker / virtualenv构建,并且当出现重大升级或环境问题时,我们会定期销毁它们 .

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

相关问题