为什么:
>安装发行版,特定于构建的库,编辑器和IDE,mysql,couchdb,java,maven,python,android-sdk等工具需要一天或几天.这是一个巨大的PITA,重复4次4次开发人员(不是系统管理员)浪费时间并产生令人烦恼的分歧,这些分歧随后出现(它构建在我的盒子综合症上).
>没有生产力,设置,技巧,脚本和设置的共享.
通过将构建系统隔离到无头虚拟盒映像中,可以帮助实现这一目标.这并不能真正解决工具或需要做的GUI桌面开发.
所以我看到了三个基本策略,重影,虚拟化,最后创建了一种内部Linux发行版(我猜Google就是这样做的).
目标开发环境基于Debian OpenBox,必须允许混合使用8GB最小的第3代Core i7笔记本电脑才能同时使用单头和多头.重要的是,lappies不一样,但是混合了2012款macbook和PC.所以:
>虚拟化:在VM中完成所有工作,如VirtualBox,在这个硬件上实用或烦人.
>重影:来自不同制造商的笔记本电脑会使这种做法变得不切实际.
> DIY发行版:没有编写一堆软件包安装的脚本,我不知道是否有任何“发行版”可以阻止它成为脚本包安装的史诗项目.
那有什么建议吗?
解决方法
我有一个类似的问题,虽然所有IT参与是新笔记本电脑最基本的设置.我没有参与设置开发环境,每个开发人员都对此负责(这很快就会成为团队的努力,这本身就是一件好事).
但是,如果没有明确的管理支持,您所做的任何事情都将使您的支持用户信服您正在做的事情是最好的.这是我们无法教授的技能.
由于我们工作的性质,我们发现面向VM的开发工作非常好.由于我们还将OSX,Windows和Linux笔记本电脑混合为开发站,并且我们朝着更加特定的工具和操作系统组合发展,虚拟机是确保新代码可以工作的最可靠方法目标平台.
从历史上看,我们已经让人们在MacBook上开发,部署到集成环境,然后花几天时间处理不适用于目标环境的特定于mac的怪癖.一旦这些用户开始使用VM,这种“花费几天”的问题就消失了.
面向VM的工作流程是否适合您,在很大程度上取决于您的开发实践.如果开发人员这似乎效果最好:
>开发人员可以在功能分支上工作吗?
>可以轻松地将该功能分支部署到他们自己的VM集
>可以轻松地将其功能分支合并到集成/测试/ qa中,并且几乎不需要调整
>有足够的风格感,不要惹恼其他开发者
至于“VM中的GUI IDE”,这也可以工作.我们的几个Mac用户走这条路线,他们在一个屏幕上有一个全屏虚拟机,他们完成所有的代码制作,并使用其他屏幕进行非开发,例如浏览stackoverflow以获得答案.如果剪贴板可以在桌面和VM之间移植,则效果最佳.
现在一个好的计划是在你正在使用的任何平台上构建一个VM,它拥有你在新构建中总是存在的所有好东西.然后将它们连接起来以从您托管的repo中提取更新,这样您就可以更好地管理何时更新的软件,从而减少版本蠕变.为了达到最佳效果,请包含一些似乎对少数开发人员来说很常见的调整,因为这样可以让心灵的思维更加轻松.
你正在与根深蒂固的做法作斗争,这总是需要一些时间来改变.至少,没有On High的订单.