为小型 Linux 软件开发团队提供桌面配置

为小型 Linux 软件开发团队提供桌面配置

目标:让一个小团队使用标准的开发图像,而不是让 4 个软件开发人员设置他们自己的环境。

为什么:

  1. 安装发行版、构建特定库、编辑器和 IDE 等工具、mysql、couchdb、java、maven、python、android-sdk 等需要一天或几天的时间。这是一个巨大的 PITA,当由 4 个开发人员(不是系统管理员)重复 4 次时,会浪费时间并产生后来出现的恼人分歧(it-builds-on-my-box 综合症)。

  2. 没有生产力、设置、技巧、脚本和设置的共享。

通过将构建系统分离到无头虚拟盒映像中,可以在一定程度上实现这一点。但这并没有真正解决工具或需要进行的 GUI 桌面开发问题。

因此,我看到了三种基本策略,即重影、虚拟化,以及最终创建一种内部 Linux 发行版(我猜谷歌会做类似的事情)。

目标开发环境基于 Debian OpenBox,必须允许混合使用 8GB 的​​第三代 Core i7 笔记本电脑,以在单头和多头模式下工作。重要的是,笔记本电脑不是相同,但混合了 2012 年的 MacBook 和 PC。因此:

  1. 虚拟化:在虚拟机(如 VirtualBox)中完成所有工作,对于这种硬件来说,是实用还是令人讨厌。

  2. 重影:来自不同制造商的笔记本电脑是否会使这一点变得不切实际。

  3. DIY 发行版:除了编写一堆软件包安装脚本外,我不知道是否有任何“发行版制造商”可以阻止这成为编写软件包安装脚本的史诗项目。

有什么建议吗?

答案1

这是一个棘手的问题,而且很快就会与政治问题发生冲突。如果企业文化中“开发人员自己开发,这是他们最有效率的方式”的观念非常强烈,那么这个问题就不可能解决。然而,由于 IT 至少参与了初始设置,所以听起来你还没有陷入困境。

我也有类似的问题,尽管 IT 部门只负责新笔记本电脑最基本的设置。我不是参与设置开发环境,每个开发人员都对此负责(这很快就会成为一项团队努力,从某种意义上来说这是一件好事)。


然而,如果没有明确的管理支持,你所做的任何事情都取决于说服你支持的用户你所做的是最好的。这是我们无法教授的技能。


由于我们工作的性质,我们发现面向虚拟机的开发效果非常好。由于我们还混合使用 OSX、Windows 和 Linux 笔记本电脑作为开发站,并且我们针对更具体的工具和操作系统组合进行开发,因此虚拟机是确保新代码在目标平台上运行的最可靠方法。

过去,我们曾让用户在 MacBook 上进行开发,然后部署到集成环境,然后花几天时间解决无法在目标环境中运行的 Mac 特有问题。一旦这些用户开始使用虚拟机,这种“花几天时间”的问题就消失了。

面向虚拟机的工作流程是否适合您,很大程度上取决于您的开发实践。如果开发人员能够做到以下几点,那么这种方法似乎效果最好:

  • 开发人员可以在功能分支上工作吗
  • 可以轻松地将该功能分支部署到自己的虚拟机集
  • 可以同样轻松地将其功能分支合并到集成/测试/质量保证中,并且几乎不会产生任何调整
  • 具有足够的风格感,不会惹恼其他开发者

至于“虚拟机中的 GUI IDE”,这也可以行得通。我们的几个 Mac 用户都采用这种方法,他们在一个屏幕上使用全屏虚拟机,并在该屏幕上进行所有代码编写,并使用其他屏幕进行非开发工作,例如浏览 stackoverflow 以查找答案。如果剪贴板可以在桌面和虚拟机之间移动,这种方法效果最好。

目前一个好的计划是,在您使用的任何平台上构建一个虚拟机,该虚拟机具有您始终在新版本中添加的所有好东西。然后将它们连接起来,从您托管的存储库中提取更新,这样您就可以更好地管理何时更新哪些软件,并减少版本蔓延。为了获得最佳效果,请包含一些似乎对一些开发人员来说很常见的调整,因为这将使心灵之战更容易。

你正在与根深蒂固的习俗作斗争,而这总是需要一些时间来改变。至少,在没有上级命令的情况下。

相关内容