如何自动化开发环境设置?

nim*_*cap 79 agile automation scrum development-environment

每当新开发人员加入团队或计算机时,开发人员都在使用更改,开发人员需要做大量工作来设置本地开发环境以使当前项目正常工作.作为一个SCRUM团队,我们正在尝试自动化所有内容,包括部署和测试,所以我要问的是:是否有工具或实践使本地开发环境设置自动化?

例如,为了设置我的环境,首先我必须安装eclipse,然后安装SVN,Apache,Tomcat,MySQL,PHP.之后我填充了数据库,我不得不对各种配置文件进行微小的改动等等......有没有办法将这种劳动减少到一键?

Pet*_*aat 65

有几种选择,有时这些选项的组合很有用:

  • 自动安装
  • 磁盘映像
  • 虚拟化
  • 源代码控制

有关各种选项的详细信息:

  1. 自动安装 工具,用于自动安装和配置工作站的各种服务,工具和配置文件:

    • Puppet有一个学习曲线,但功能强大.您可以定义计算机类(开发盒,Web服务器等),然后执行安装,配置和保持盒子处于正确状态所需的操作.您要求单击一下,但默认情况下Puppet是零点击,因为它会定期检查您的机器以确保它仍然按照需要进行配置.它将检测文件或模式何时更改,并解决问题.我目前使用它来维护一些RedHat Linux机器,虽然它能够处理数千个.(自2009-05-08起不支持Windows).
    • Cfengine是另一个.我见过这个在70家工程师使用RedHat Linux的商店里成功使用过.它的局限性是Puppet的部分原因.
    • SmartFrog是另一种配置主机的工具.它确实支持Windows.
    • Shell脚本. RightScale提供了有关如何使用shell脚本配置Amazon EC2映像的示例.
    • 安装包.在Unix机器上,可以完全使用软件包完成此操作,而在Windows上,msi可能是一种选择.例如,RubyWorks为您提供了一个完整的Ruby on Rails堆栈,所有这些都是通过安装一个软件包来反过来通过依赖项安装其他软件包.
  2. 磁盘映像 当然还有磁盘映像工具,用于存储已配置主机的映像,以便可以将其还原到另一台主机.与虚拟化一样,这对于测试盒来说尤其不错,因为它很容易将事物恢复到干净的状态.保持最新状态仍然是一个问题 - 是否值得制作新图像只是为了传播配置文件的变化?

  3. 虚拟化是另一种选择,例如制作Xen,VirtualPC或VMWare映像的副本以创建新主机.这对于测试盒尤其有用,因为无论测试产生什么样的混乱,您都可以轻松地恢复到干净的已知状态.与磁盘映像工具一样,保持主机最新需要比使用自动安装/配置工具更多的手动步骤和警惕性.

  4. 源代码控制 一旦安装/配置了必要的工具,那么构建应该是从源代码存储库中检查所需内容并构建它.

目前我使用上述的组合来自动化该过程,如下所示:

  • 从VMWare guest虚拟机上的准系统OS安装开始
  • 运行shell脚本以安装Puppet并从源代码控制中检索其配置
  • Puppet安装工具/组件/配置
  • 检查源代码控制中的文件以构建和部署我们的Web应用程序

  • 您是否写过http://agile.dzone.com/articles/4-methods-automate-development,因为它听起来非常相似? (5认同)
  • 不,我没有写那篇文章,虽然从相似之处来看,似乎我启发了它.:-) (5认同)

Jon*_*han 19

我偶然发现了这个问题,并且很惊讶没有人提到过Vagrant.

流浪汉

正如Pete TerMaat和其他人所提到的,虚拟化是管理和自动化开发环境的好方法.Vagrant基本上消除了设置这些虚拟盒子的痛苦.

几分钟内,你可以有你最喜欢的Linux发行版启动和运行的完整拷贝,并置备完全相同的方式您的生产服务器.

不再与OSX或Windows争夺安装PHP,MySQL等.所有软件都在虚拟机内部运行.你甚至可以通过SSH进行操作vagrant ssh.如果你犯了错误或打破了某些东西,只需要vagrant destroy它,并vagrant up重新开始.

Vagrant会自动为您的本地文件系统创建一个同步文件夹,这意味着您无需在虚拟机中进行开发(即使用Vim).使用您选择的编辑器.

我现在为几乎每个项目创建一个新的"Vagrant box".我的所有设置都保存在项目存储库中,因此很容易引入另一个团队成员.他们只需要拉回购物,然后跑vagrant up,他们就准备好了.

这也使得处理具有不同软件要求的项目变得更加容易.也许你有一些依赖PHP 5.3的项目,但是一些运行PHP 5.4的新项目.只需为该项目安装所需的版本即可.

看看这个!


sle*_*ske 13

重要的一点是在源代码管理中设置项目,以便您可以在结帐后立即构建,部署和运行.

这意味着您还应该检查辅助基础结构,例如Makefile,ant buildfiles等,以及工具的设置,例如IDE项目文件.

这应该照顾个别项目的设置麻烦.

对于基本机器设置,您可以使用标准图像.另一种选择是使用平台的工具自动安装.在Linux下,您可以创建一个依赖于您需要的所有包的元数据包.在Windows下,使用MSI等应该可以进行类似的操作.

编辑:

理想情况下,您可以检查允许构建生成帮助程序基础结构的信息,而不是检查帮助程序基础结构.这是例如GNU构建系统(autotools等)或Maven采用的方法.这更加优雅,因为您可以(理论上)为任何(支持的)构建环境生成基础结构,因此您不必绑定到例如一个特定的IDE,并且辅助基础结构(路径等)中的设置不需要复制主要项目设置.

然而,这也是一种更复杂的方法,所以如果你不能让它工作,我相信直接检查IDE文件之类的东西是可以接受的.


小智 7

我喜欢使用Virtual PC或VMware来虚拟化开发环境.这提供了可以在开发人员之间共享的标准"开发环境".您不必担心用户可能添加到他们的系统中的软件可能与您的开发环境冲突.它还为我提供了一种方法来处理两个项目,其中开发环境不能同时在一个系统上(使用两个不同版本的核心技术).

  • 我们使用完全虚拟化的Dev环境.我们使用VMServer或VirtualBox来托管Vista VM.VM映像包含我们的整个开发堆栈,但未附加到corp域.当用户需要新计算机时,他们会在本地复制它,运行NewSID,然后使用唯一的计算机名称加入域.在现代硬件上,没有明显的性能下降.我们在一个解决方案中使用VS2008和~20个C++/C#项目,一切正常. (2认同)