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

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

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

13个解决方案
64 votes

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

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

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

  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应用程序
Pete TerMaat answered 2019-04-17T17:55:48Z
17 votes

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

Vagrant

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

几分钟之内,您就可以获得您喜爱的Linux发行版的全新副本,并且生成服务器的配置方式与您的生产服务器完全相同。

不再与OSX或Windows争夺安装PHP,MySQL等。 所有软件都在虚拟机内部运行。 你甚至可以用vagrant up SSH进入。如果你犯了错误或者破坏了什么,只需要vagrant destroy,然后再开始新的vagrant up

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

我现在为几乎每个项目创建一个新的“Vagrant box”。 我的所有设置都保存在项目存储库中,因此很容易引入另一个团队成员。 他们只需要拉回购物,并运行vagrant up,他们已经准备好了。

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

看看这个!

Jonathan answered 2019-04-17T17:56:59Z
13 votes

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

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

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

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

编辑:

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

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

sleske answered 2019-04-17T17:58:03Z
7 votes

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

jeremyasnyder answered 2019-04-17T17:58:29Z
3 votes

使用puppet配置开发和生产环境。 使用顶尖的自动化系统是扩展操作的唯一方法。

David Schmitt answered 2019-04-17T17:58:53Z
1 votes

总是可以选择使用虚拟机(参见例如VMWare Player)。 创建一个环境并将其复制到每个新员工,只需要最少的配置。

tehvan answered 2019-04-17T17:59:19Z
1 votes

在之前的地方,我们在SCM(clearcase然后SVN)中拥有一切(我的意思是一切)。 当一个新的开发人员可以在他们安装ClearCase | SVN并吸收存储库时。 当您需要更新特定的lib /工具时,这也会处理这种情况,因为您可以让开发团队更新他们的环境。

我们为此使用了两个repo,因此代码和工具/配置生活在不同的地方。

Mike Reedell answered 2019-04-17T17:59:51Z
1 votes

我强烈推荐DevStructure的Blueprint。 它是开源的,你的用例实际上是我们最初编写软件的原因。 我们的目标有所改变,但它仍然是您所描述的完美工具。 简而言之,您可以创建可重用的服务器配置 - 简单的配置管理。 我希望这有帮助!

[https://github.com/devstructure/blueprint](Blueprint @ Github)

Matt Tanase answered 2019-04-17T18:00:23Z
1 votes

我自己一直在考虑这个问题。 您还可以使用其他一些技术。 这是我目前正在设置的内容:

  • 基于PXE的预播种安装映像(Debian Squeeze)。 您可以启动裸机(或新虚拟设备)并从PXE启动菜单中选择映像。 这具有能够在物理机器上安装环境(除虚拟设备之外)的主要优点。
  • 有人已经提到了Puppet。 我使用CFEngine,但这是一个类似的交易。 基本上,您的配置已记录在案并集中在策略文件中,这些文件由客户端上的代理程序不断强制执行。
  • 如果您不想要一个严格的环境(即开发人员可能会选择工具集的组合),您可以滚动自己的deb软件包,以便新的开发人员可以键入apt-cachersudo apt-get install acmecorp-intellij-env
  • 稍微偏离主题,但如果您运行基于Debian的环境(即Ubuntu),请考虑安装apt-cacher(包代理)。 除了节省带宽之外,它还可以使您的安装更快(因为软件包缓存在您的本地网络上)。
hoipolloi answered 2019-04-17T18:01:18Z
1 votes

如果您正在使用OSX并使用Rails。 我建议:

  • [https://github.com/platform45/let-there-be-light]
  • [https://github.com/thoughtbot/laptop]
Neil answered 2019-04-17T18:01:57Z
0 votes

如果您在标准配置中使用计算机,则可以使用全新配置完美的安装对磁盘进行映像 - 这在许多公司中是非常流行的方法(并且不仅仅适用于开发人员)。 如果您需要单独配置的操作系统,只要将已配置的操作系统转换为所需的设置,您就可以tar-bz2所有添加和更改的文件,只需将其解压缩为root,即可从头开始创建所需的环境。

Alex Martelli answered 2019-04-17T18:02:23Z
0 votes

如果你使用的是Linux风格,你可能有一个软件包管理系统:认为.rpm用于fedora / redhat,或者.deb用于ubuntu / debian。 您描述的许多内容已经提供了可用的软件包:svn,eclipse等。您可以为公司特定软件推送自己的软件包,创建存储库(可能只在本地网络上可用),然后您的设置可以简化为单个 bash脚本将公司仓库添加到/etc/apt/sources.list(debian / ubuntu),然后调用命令,如,


/home/newhire$ apt-get update && apt-get install some complete package list

您可以使用buildbot为经常更改的公司包自动执行常规构建。

si28719e answered 2019-04-17T18:02:56Z
0 votes

在[http://nsnihalsahu.github.io/devscript]上试用DevScript。它的一个命令就像,devscript lampdevscript laraveldevscript django。 大约几分钟,取决于您的互联网公司的速度

Nihal Sahu answered 2019-04-17T18:03:22Z
translate from https://stackoverflow.com:/questions/839360/how-to-automate-development-environment-setup