2015-10-17 150 views
0

我想设置下面的工作流程。Vagrant for development and CI

  • 每个项目都有版本控制下的Vagrant文​​件和为每个配置更改构建虚拟机的Jenkins作业。该虚拟机旨在用于持续集成和开发。
  • 开发人员加入一个项目。他从Jenkins那里抓取了相应的虚拟机,这些虚拟机都是安装和配置好的。
  • 他运行他下载的虚拟机。他的所有偏好例如。 .gitconfig .vimrc等已经在该虚拟机的主目录中,即,他使用虚拟机进行编码,而不仅仅是运行和测试。
  • 当詹金斯下的项目的构建工作检测库的变化,它抓住了虚拟机从同一作业中使用的开发制造品和运行构建

这将允许新的开发者做好准备在完全相同的环境中,持续集成服务器可以在任何地点使用和部署代码,这要归功于虚拟机。

我想我可能会尝试这与流浪和厨师,但我不知道他们真的是要这样使用。有什么想法吗?

+0

我不明白你为什么需要从开发人员启动虚拟机?我的意思是所有虚拟机应该是相同的 - 有一个詹金斯流浪者插件,但你似乎添加了一些更多的逻辑比我需要从我的角度来看 –

+0

因此,每个开发人员都有自己的副本,具有相同的确切环境。例如,他们可以离线工作。 – Deimos

+0

明确,但所有的虚拟机都是一样的,它使用流浪的点,你从同一个盒子开始,并应用相同的供应,所以詹金斯会从同一个流浪文件启动一个虚拟机,他们将全部相同 –

回答

1

每个项目都有版本控制下的流浪文件和Jenkins 作业,该作业为每个配置更改构建虚拟机。 此虚拟机旨在用于连续的 集成和开发。

Vagrantfile定义了什么是您的应用程序环境应该看起来像什么。 除配备(Chef,Puppet,Ansible或Shell ...)外,您还将为每个正在处理项目的团队成员创建完全相同的VM。 然后您不需要创建虚拟机,并使用来自CI或开发人员的同一个虚拟机实例。每个人都有自己的环境。

开发人员加入一个项目。他从詹金斯那里抓取了相应的虚拟 机器,这些机器都是安装和配置好的。

每个开发者都会从同一个Vagrantfile启动在笔记本电脑上运行的虚拟机 - 不需要共享虚拟机。

当詹金斯下的项目的构建工作检测到 库的变化,它抓住了虚拟机从同一 作业中使用的开发制造品和运行构建

您可以使用Jenkins vagrant-plugin从与您的项目相对应的相同Vagrant文​​件中启动VM。您不会从现有VM运行作业。

注意:如果您担心配置需要太多时间,并且您为什么说要使用现有VM,则可以创建一个新盒子,并安装所有依赖项并重新打包以将其用作新基准盒

+0

谢谢。是的,我不是很清楚:当我说“虚拟机”时,我的意思是“任何虚拟机的克隆”,而不是“同一个实例”。重要的是CI和发展的环境是相同的。从Jenkins获取虚拟机的想法是,它可以帮助开发人员避免安装Vagrant。他/她只是获取虚拟磁盘并运行它:不需要重新生成虚拟机。如果Vagrant文​​件发生变化,Jenkins可以发送电子邮件通知开发人员更新他们的虚拟机。我不明白你的最后一句话:我如何重新包装? – Deimos

+0

坦率地说,我认为如果你打算使用虚拟机,流浪汉对于开发人员来说可以加以管理。共享文件夹,ssh,重新加载。 “重要的是CI和开发的环境是相同的。”yes Vagrantfile + provisioning将确保这一点。你可以阅读更多[这里](https://docs.vagrantup.com/v2/virtualbox/boxes.html)关于流浪盒和(重新)包装 –