或者,实际上建立一个构建过程,当没有很多的开始时.
目前,这几乎是我的团队面临的情况.我们主要进行网络应用程序开发(但目前没有桌面开发).即使使用我们适度的应用程序,软件部署仍然难以操作,而且我在这两年(我和公司)的一部分中已经出现了太多问题.现在是时候做点什么了,结果是我们能够用一块石头杀死两只Joel Test鸟(每日构建和一步构建,两者都不以任何形式存在).
我在这里得到的是一些关于我需要做的事情或者思考的事情的一般性见解,从那些从事软件开发的时间超过我的人,也有更大的脑子.我相信大多数人目前都会在测试版中发布.
相关工具:Visual Build Source Safe 6.0(我知道,但我现在无法做任何关于我们是否使用Source Safe的事情.这可能是我下一场战斗.)
暂时,我有一个Visual Build项目,它执行此操作:
获取源和放置在本地目录中,包括项目所需的必要DLL.
获取配置文件并根据需要重命名(我们将它们存储在一个特殊的子目录中,该子目录不是实际应用程序的一部分,它们根据用途命名).
使用Visual Studio构建
使用命令行进行预编译,复制到"build"目录中
复制到目的地.
获取任何必要的额外资源 - 主要是与项目关联的文档,图像和报告(并从步骤5放入目录).有很多这样的东西,我不想先包括它.但是,我只会复制更改的项目,所以也许它无关紧要.我不确定我是否真的想在之前的步骤中包含这些内容.
我仍然需要哄一些注销Visual Build的所有这些,但我还没有达到我需要做的那一点.
有没有人有任何建议或建议?我注意到,我们目前没有使用部署项目.它会删除我假设的这个构建中必需的一些步骤(比如web.config交换).
在承担从未进行过自动构建过程的项目时,更容易采取步骤.不要试图一次吞下多少,否则会感到势不可挡.
首先使用自动构建程序(即nant/msbuild)一步编译代码.我不打算辩论哪一个更好.找一个让你感觉舒服并使用它的人.让构建脚本与源代码管理中的项目一起使用.
了解您希望如何触发自动构建.无论是将其连接到CruiseControl还是使用计划任务运行每晚构建任务.CruiseControl或TeamCity可能是最佳选择,因为它们包含许多工具,您可以使用它们来简化此步骤.CruiseControl是免费的,TeamCity是免费的,您可能需要根据项目的大小来支付费用.
好的,到目前为止,您对这些工具非常熟悉.现在,您已准备好根据要执行的测试,部署等操作添加更多任务...
希望这可以帮助.
我有一套Powershell脚本可以为我完成所有这些.
脚本1:构建 - 这个很简单,它主要通过调用msbuild来处理,并且它还创建了我的数据库脚本.
脚本2:包 - 这个包含各种参数来打包各种环境的发布,例如测试,以及由许多机器组成的生产环境的子集.
脚本3:部署 - 这是在Package脚本创建的文件夹中的每台机器上运行的(Deploy脚本作为包装的一部分复制)
从部署脚本中,我对机器名称之类的内容进行了健全性检查,因此事情不会意外地部署到错误的位置.
对于web.config文件,我使用
具有已在生产机器上的覆盖的功能,它们是只读的,因此它们不会被意外地覆盖.未签入Local.config文件,我不必在构建时进行任何文件切换.
[编辑]相当于appSettings file = for config部分是configSource ="Local.config"
两年前我们从使用perl脚本切换到MSBuild并且没有回头.构建visual studio解决方案只需在主xml文件中指定即可完成.
对于任何更复杂的(让你的源代码,执行单元测试,建筑安装软件包,部署Web网站),你只需在.NET中创建一个新的类派生从任务,它覆盖的执行功能,然后从你的构建XML文件中引用这.
这里有一个很好的介绍: 介绍