如何自动化开发环境设置?
每当新开发人员join团队或计算机开发人员正在使用更改,开发人员需要做大量的工作来设置当地的开发环境,使当前的项目工作。 作为一个SCRUM团队,我们正在试图自动化所有的部署和testing,所以我问的是:是否有一种工具或一种实践来使本地开发环境设置自动化?
例如,要设置我的环境,首先我必须安装eclipse,然后SVN,Apache,Tomcat,MySQL,PHP。 之后,我填充了数据库,我不得不在各种configuration文件等做小的变化…有没有办法减less这种劳动,一键点击?
有几个选项,有时这些的组合是有用的:
- 自动化安装
- 磁盘映像
- 虚拟化
- 源代码控制
有关各种选项的详细信息:
-
自动安装工具,用于自动安装和configuration工作站的各种服务,工具和configuration文件:
- 木偶有一个学习曲线,但function强大。 您可以定义机器类(开发盒,Web服务器等),然后执行必要的安装,configuration以及将盒保持在适当的状态。 您要求一次点击,但默认情况下,Puppet是零点击,因为它定期检查您的机器,确保它仍然按照需要进行configuration。 它会检测到文件或模式已被更改,并解决问题。 我目前使用它来维护一些RedHat Linux机器,尽pipe它能够处理数千个。 (截至2009-05-08不支持Windows)。
- Cfengine是另一个。 我已经看到,在一家拥有70名使用RedHat Linux的工程师的商店里,这一切都成功了。 它的局限性是Puppet原因的一部分。
- SmartFrog是configuration主机的另一个工具。 它确实支持Windows。
- Shell脚本。 RightScale提供了如何使用shell脚本configurationAmazon EC2映像的示例。
- 安装软件包。 在一个Unix机器上,可以完全用软件包来做这件事,而在Windows上,MSI可能是一个select。 例如, RubyWorks为您提供了一个完整的Ruby on Rails堆栈,全部通过安装一个包来依次安装其他包。
-
磁盘映像当然,还有磁盘映像工具用于存储已configuration主机的映像,以便可以将映像还原到其他主机。 与虚拟化一样,这对于testing盒来说特别好,因为很容易将事情恢复到干净的状态。 保持不断更新的事情仍然是一个问题 – 是否值得制作新的图像来传播configuration文件的变化?
-
虚拟化是另一种select,例如复制Xen,VirtualPC或VMWare映像以创build新主机。 这对testing框特别有用,因为不pipetesting产生多less混乱,您都可以轻松恢复到干净的已知状态。 与磁盘映像工具一样,与使用自动化安装/configuration工具相比,使主机保持最新状态需要更多手动步骤和警惕性。
-
源代码控制一旦你已经安装/configuration了必要的工具,那么构build应该是检查源代码库中需要什么并构build它。
目前,我使用上述的组合来自动执行该过程,如下所示:
- 从VMWare guest虚拟机上的准系统操作系统安装开始
- 运行一个shell脚本来安装Puppet并从源代码控制中检索它的configuration
- 木偶安装工具/组件/configuration
- 从源代码控制中检出文件来构build和部署我们的Web应用程序
我偶然发现了这个问题,很惊讶没有人提到stream浪者 。
正如Pete TerMaat等人所提到的,虚拟化是pipe理和自动化开发环境的好方法。 stream浪者基本上从build立这些虚拟的盒子中消除了痛苦。
在几分钟之内,您就可以拥有并运行您最喜爱的Linux发行版的全新副本,并以与生产服务器完全相同的方式进行configuration。
没有更多的与OSX或Windows争取安装PHP,MySQL等。 所有软件都在虚拟机内运行并运行。 你甚至可以SSH与vagrant ssh
。 如果你犯了一个错误或者破坏了一些东西,只是vagrant destroy
它,并且vagrant up
重新开始。
Vagrant会自动为您的本地文件系统创build一个同步文件夹 ,这意味着您不需要在虚拟机内开发(即使用Vim)。 使用你select的编辑器。
我现在几乎为每一个项目创build一个新的“stream浪者箱子”。 我所有的设置都保存在项目存储库中,所以很容易find另一个团队成员。 他们只需要拉回购vagrant up
,就可以vagrant up
,他们已经准备好了。
这也使得处理具有不同软件需求的项目变得更容易。 也许你有一些依赖PHP 5.3的项目,但是一些运行PHP 5.4的新项目。 只需安装您想要的项目的版本。
一探究竟!
重要的一点是在源代码控制中设置你的项目,这样你就可以立即build立,部署和结账后运行。
这意味着您还应该检查帮助程序基础结构,如Makefile,ant构build文件等,以及工具的设置(如IDE项目文件)。
这应该照顾个别项目的设置麻烦。
对于基本的机器设置,您可以使用标准图像。 另一个select是使用您的平台的工具来自动安装。 在Linux下,你可以创build一个依赖于所有你需要的软件包的元软件包。 在Windows下,类似的东西应该可以使用MSI或类似的东西。
编辑:
理想情况下,不要检查辅助程序基础结构,而是检查允许构build生成辅助程序基础结构的信息。 这是GNU构build系统(自动工具等)或Maven采取的方法。 这更加优雅,因为您可以(理论上)为任何(受支持的)构build环境生成基础结构,因此您不必绑定到某个特定的IDE,并且辅助程序基础结构(path等)中的设置不需要重复主要项目设置。
但是,这也是一个更复杂的方法,所以如果你不能正常工作,我相信直接检入像IDE文件这样的东西是可以接受的。
我喜欢使用Virtual PC或VMware来虚拟化开发环境。 这提供了一个标准的“开发环境”,可以在开发人员之间共享。 您不必担心用户可能添加到他们的系统的软件,这可能与您的开发环境有冲突。 它还为我提供了一种工作方式,使两个项目的开发环境不能同时在一个系统上(使用两个不同版本的核心技术)。
使用木偶来configuration您的开发和生产环境。 使用一stream的自动化系统是扩展您的操作的唯一方法。
总是有使用虚拟机的select(例如参见VMWare Player )。 创build一个环境,并以最less的configuration为每个新员工复制。
在以前的地方,我们有一切(我的意思是一切)在SCM(clearcase然后SVN)。 当一个新的开发人员可以在他们安装ClearCase | SVN并吸收存储库。 当您需要更新特定的lib /工具时,这也可以处理这种情况,因为您可以让开发团队更新其环境。
我们使用了两个repo,所以code和tools / config住在不同的地方。
我强烈推荐DevStructure的Blueprint。 它是开源的,你的用例实际上是我们最初编写软件的确切原因。 我们的目标有所改变,但它仍然是您所描述内容的完美工具。 简而言之,您可以创build可重用的服务器configuration – 简单的configurationpipe理。 我希望这有帮助!
https://github.com/devstructure/blueprint(Blueprint @ Github)
我一直在想这个。 还有其他一些技术可以join到混合中。 这是我目前正在build立的:
- 基于PXE的预先安装的安装映像(Debian Squeeze)。 您可以启动裸机(或新的虚拟设备),然后从PXE启动菜单中select映像。 这具有能够在物理机器上安装环境(除了虚拟设备)的主要优点。
- 有人已经提到木偶。 我使用CFEngine,但它是一个类似的交易。 本质上,您的configuration被logging并集中在由客户端上的代理持续实施的策略文件中。
- 如果你不想要一个僵化的环境(即开发人员可以select工具集的组合),你可以推出你自己的deb包,这样新的开发者可以input
sudo apt-get install acmecorp-eclipse-env
或者sudo apt-get install acmecorp-intellij-env
例如sudo apt-get install acmecorp-intellij-env
。 - 稍微偏离主题,但如果运行基于Debian的环境(例如Ubuntu),请考虑安装
apt-cacher
(软件包代理)。 除了节省带宽之外,它还会使你的安装更快(因为软件包被caching在本地networking中)。
如果您使用OSX并使用Rails。 我会build议:
如果您使用的是标准configuration的机器,您可以使用全新configuration的安装来映像磁盘 – 这在许多公司(而不仅仅是开发人员)中是非常stream行的方法。 如果您需要单独configuration的操作系统,您可以将configuration的操作系统转换为您所需的设置后,将所有添加和更改的文件进行tar-bz2操作,只需将其解压为root即可从头开始创build所需的环境。
如果你使用的是linux的风格,你可能已经有了一个软件包pipe理系统:fedora / redhat的.rpm,ubuntu / debian的.deb。 你所描述的许多东西已经有了可用的包:svn,eclipse等等,你可以把自己的软件包放到公司特定的软件中,创build一个存储库(可能只在本地networking上可用),然后你的设置可以减less到一个bash脚本,将公司的repo添加到/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
。 在几分钟内,取决于你的互联网公司的速度
您可以从Oracle的Java站点 – Java SE下载下载最新版本的Java JDK。 您将在下载的文件中find有关安装JDK的说明,请按照给出的说明安装和configuration设置。 最后设置PATH和JAVA_HOME环境variables来引用包含java和javac的目录,通常分别是java_install_dir/bin
和java_install_dir
。
如果您正在运行Windows并在C:\jdk1.8.0_102
安装了JDK,则必须将以下行放在C:\autoexec.bat
文件中。
set PATH=C:\jdk1.8.0_102\bin;%PATH% set JAVA_HOME=C:\jdk1.8.0_102
或者,也可以右键单击我的电脑,select属性,然后select高级,然后select环境variables。 然后,您将更新PATH值并按下OKbutton。
在Linux上,如果SDK安装在/usr/local/jdk1.8.0_102中,并且使用C shell,则可以将以下代码放入.cshrc文件中。
setenv PATH /usr/local/jdk1.8.0_102/bin:$PATH setenv JAVA_HOME /usr/local/jdk1.8.0_102
或者,如果您使用Android Studio,则会自动知道您已安装Java的位置。 Android IDE
有很多先进的技术可用于开发Android应用程序,熟悉的技术,主要是使用如下工具
Android Studio Eclipse IDE(Deprecated)
极乐世界学院提供Android,MICROSOFT,REDHAT,CEH和VMware培训,获得具有丰富经验和技能的authentication专业人员