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

每当新开发人员join团队或计算机开发人员正在使用更改,开发人员需要做大量的工作来设置当地的开发环境,使当前的项目工作。 作为一个SCRUM团队,我们正在试图自动化所有的部署和testing,所以我问的是:是否有一种工具或一种实践来使本地开发环境设置自动化?

例如,要设置我的环境,首先我必须安装eclipse,然后SVN,Apache,Tomcat,MySQL,PHP。 之后,我填充了数据库,我不得不在各种configuration文件等做小的变化…有没有办法减less这种劳动,一键点击?

有几个选项,有时这些的组合是有用的:

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

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

  1. 自动安装工具,用于自动安装和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堆栈,全部通过安装一个包来依次安装其他包。
  2. 磁盘映像当然,还有磁盘映像工具用于存储已configuration主机的映像,以便可以将映像还原到其他主机。 与虚拟化一样,这对于testing盒来说特别好,因为很容易将事情恢复到干净的状态。 保持不断更新的事情仍然是一个问题 – 是否值得制作新的图像来传播configuration文件的变化?

  3. 虚拟化是另一种select,例如复制Xen,VirtualPC或VMWare映像以创build新主机。 这对testing框特别有用,因为不pipetesting产生多less混乱,您都可以轻松恢复到干净的已知状态。 与磁盘映像工具一样,与使用自动化安装/configuration工具相比,使主机保持最新状态需要更多手动步骤和警惕性。

  4. 源代码控制一旦你已经安装/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包,这样新的开发者可以inputsudo 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 lampdevscript laraveldevscript django 。 在几分钟内,取决于你的互联网公司的速度

您可以从Oracle的Java站点 – Java SE下载下载最新版本的Java JDK。 您将在下载的文件中find有关安装JDK的说明,请按照给出的说明安装和configuration设置。 最后设置PATH和JAVA_HOME环境variables来引用包含java和javac的目录,通常分别是java_install_dir/binjava_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专业人员

Interesting Posts