Improving Your Build Process或者,实际上在没有太多准备的情况下建立构建过程。 目前,这就是我小组所面临的情况。我们主要进行Web应用程序开发(但目前不进行桌面开发)。即使使用适度的应用程序,软件部署也很丑陋且笨拙,在我加入该团队(和公司)的两年中,我们遇到了太多问题。对此已经过去了,其结果是,我们将能够用一块石头杀死两只乔尔测试鸟(每日构建和一步构建,两种形式都不存在)。 我所追求的是,??那些从事软件开发工作的时间超过我并且也有更强的头脑的人对我需要做的事情或思考的事情有??一些一般的了解。我有信心将会成为目前在测试版中发布的大多数人。
相关工具: 暂时,我有一个Visual Build项目可以执行以下操作: 对于所有这些,我仍然需要从Visual Build中退出,但是现在还不需要这样做。 有人有什么建议或建议吗?我会指出,我们当前未使用"部署项目"。我认为此构建将删除一些必需的步骤(例如web.config交换)。 在进行从未具有自动构建过程的项目时,分步进行将更容易。不要一次吞咽太多,否则会感到不知所措。 希望这可以帮助。 我有一组Powershell脚本可以为我完成所有这些工作。 脚本1:构建-这很简单,主要是通过调用msbuild来处理的,它还创建了我的数据库脚本。 脚本2:打包-该脚本采用各种参数来打包针对各种环境(例如测试)和生产环境的子集的发行版,该环境由许多机器组成。 脚本3:部署-在程序包脚本创建的文件夹中的每台机器上运行(部署脚本作为打包的一部分复制到其中) 在部署脚本中,我对机器名称之类的内容进行了完整性检查,以确保不会将它们意外地部署到错误的位置。 对于web.config文件,我使用
功能具有生产机器上已经存在的替代,并且它们是只读的,因此不会被意外覆盖。 Local.config文件未签入,并且在构建时不必进行任何文件切换。 [编辑]相当于配置部分的appSettings file =是configSource =" Local.config"
两年前,我们从使用Perl脚本切换到了MSBuild,并且没有回头。 对于任何更复杂的事情(获取源代码,执行单元测试,构建安装包,部署网站),您只需在.net中创建一个继承自Task的新类,该类将覆盖Execute函数,然后从构建xml文件中引用该类。 。
这里有一个很好的介绍: 我建议确保您的构建脚本(和安装程序项目,如果您需要的话)在源代码控制中,这是一件事。我倾向于使用一个非常简单的脚本,该脚本只检出最新的"主"构建脚本,然后启动它。 我说这个b / c我看到团队只是在服务器上运行最新版本的构建脚本,但是他们从未将其放到源代码管理中,或者在执行时只随机检查了它们。如果您使构建过程从源代码控制中"获取",它将迫使您在其中保留最新和最大的构建脚本。 我们的构建过程是一堆自家开发的Perl脚本,这些脚本已经发展了十多年左右,没什么花哨的东西,但它能完成工作。一个脚本获取最新的源代码,另一脚本构建它,第三脚本将其转移到网络位置。我们进行桌面应用程序开发,因此我们的暂存过程还构建用于测试并最终交付给客户的安装软件包。 我建议您将其分解为各个步骤,因为有时您想重建而不是最新,或者只是需要重新登台。我们的脚本还可以处理来自不同分支的构建,因此请考虑您开发的任何解决方案。 最终,我们有一台专用的构建机器,该机器每晚都会重建主干和维护分支,并发送一封有任何问题或是否成功完成的电子邮件。 我只从事过几个.Net项目(我大部分都做过Java),但是我建议使用的是NAnt之类的工具。我将构建耦合到IDE时遇到了一个真正的问题,这最终使您很难在以后设置构建服务器,因为您必须在要从中构建的任何盒子上进行完整的VS安装。未来。 话虽如此,任何自动化构建都比没有自动化构建要好。
我们使用UppercuT。 http://code.google.com/p/uppercut/ 这里有一些很好的解释:UppercuT 我们的构建系统是一个makefile(或两个)。使它正常工作非常有趣,因为它需要同时在Windows(作为VS下的构建任务)和Linux(作为常规的" make bla"任务)上运行。真正有趣的是,构建从.csproj文件获取实际的文件列表,从中构建(另一个)makefile,然后运行该文件。在该过程中,make文件实际上将其称为自身。 如果那种想法不会吓到读者,那么(他们要么疯了,要么)他们可能会得到make +"您最喜欢的字符串mangler"来为他们工作。 |