每次新开发人员加入团队或使用开发人员的计算机时,开发人员都需要做大量工作来设置本地开发环境以使当前项目正常工作。作为SCRUM团队,我们正在尝试使包括部署和测试在内的所有过程自动化,所以我要问的是:是否存在使本地开发环境设置自动化的工具或实践?
例如,要设置环境,首先必须安装eclipse,然后安装SVN,Apache,Tomcat,MySQL,PHP。之后,我填充了数据库,并且不得不对各种配置文件等进行细微更改。是否有办法将这种工作减少到一键式?
Answers:
有几种选择,有时将它们组合起来很有用:
各种选项的详细信息:
自动化安装 工具,用于自动化安装和配置工作站的各种服务,工具和配置文件:
磁盘映像 当然,还有磁盘映像工具,用于存储已配置主机的映像,以便可以将其还原到其他主机。与虚拟化一样,这对于测试箱特别有用,因为它很容易将内容还原到干净的状态。使事情保持最新状态仍然是一个问题-仅为了传播配置文件更改而值得制作新映像吗?
虚拟化是另一种选择,例如制作Xen,VirtualPC或VMWare映像的副本以创建新主机。这对于测试盒特别有用,因为无论测试产生什么混乱,您都可以轻松地恢复到干净的已知状态。与磁盘映像工具一样,与使用自动安装/配置工具相比,使主机保持最新状态需要更多的手动步骤和警惕性。
源代码控制 一旦您安装/配置了必要的工具,然后进行构建就应该从源代码存储库中检查出所需内容并进行构建。
目前,我结合使用上述方法来实现以下过程的自动化:
我偶然发现了这个问题,感到非常惊讶的是,没有人提到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。只需安装该项目所需的版本即可。
重要的一点是在源代码管理中设置项目,以便您可以在签出后立即构建,部署和运行。
这意味着您还应该签入帮助程序基础结构,例如Makefile,ant buildfile等,以及工具的设置,例如IDE项目文件。
那应该解决单个项目的安装麻烦。
对于基本的机器设置,您可以使用标准映像。另一种选择是使用平台的工具来自动安装。在Linux下,您可以创建一个依赖于所需所有软件包的元软件包。在Windows下,使用MSI等类似的东西应该是可能的。
编辑:
理想情况下,您无需检入帮助程序基础结构,而是检入允许构建生成辅助程序基础结构的信息。这是例如GNU构建系统(自动工具等)或Maven所采用的方法。这甚至更加优雅,因为您可以(理论上)为任何(受支持的)构建环境生成基础结构,因此您不必绑定到一个特定的IDE,并且辅助基础结构(路径等)中的设置不需要重复主要项目设置。
但是,这也是一种更复杂的方法,因此,如果您无法使其正常工作,我认为直接检查IDE文件等内容是可以接受的。
我喜欢使用Virtual PC或VMware虚拟化开发环境。这提供了可以在开发人员之间共享的标准“开发环境”。您不必担心用户可以将其添加到系统中的软件可能与您的开发环境冲突。它还为我提供了一种方法来处理两个开发环境不能都在一个系统上的项目(使用两种不同版本的核心技术)。
始终可以选择使用虚拟机(例如,参见VMWare Player)。创建一个环境,并以最少的配置将其复制给每个新员工。
我强烈推荐DevStructure中的Blueprint。它是开源的,您的用例实际上是我们最初编写该软件的确切原因。我们的目标有所改变,但仍然是您所描述的理想工具。简而言之,您可以创建可重用的服务器配置-简单的配置管理。我希望这有帮助!
https://github.com/devstructure/blueprint(蓝图@ Github)
我自己一直在想这个。您还可以使用其他一些技术。这是我当前正在设置的:
sudo apt-get install acmecorp-eclipse-env
或sudo apt-get install acmecorp-intellij-env
。apt-cacher
(软件包代理)。除了节省带宽外,它还可以使您的安装速度更快(因为程序包已缓存在本地网络中)。如果您正在使用OSX并使用Rails。我建议:
如果您使用的是Linux操作系统,则可能已经有了一个软件包管理系统:对于fedora / redhat认为.rpm,对于ubuntu / debian认为.deb。您描述的许多事物已经提供了可用的软件包:svn,eclipse等。您可以针对公司特定的软件推出自己的软件包,创建存储库(也许仅在本地网络上可用),然后将您的设置简化为一个bash脚本,它将公司回购添加到/etc/apt/sources.list(debian / ubuntu),然后调用以下命令:
/home/newhire$ apt-get update && apt-get install some complete package list
您可以使用buildbot来自动执行经常更改的公司软件包的常规构建。
在http://nsnihalsahu.github.io/devscript上试用DevScript 。它的一个命令,如
devscript lamp
或devscript laravel
或devscript django
。大约在几分钟后,取决于您的互联网速度