对于我们公司的网站,我们开发的风格最准确地称为持续部署 (http://toni.org/2010/05/19/in-praise-of-continuous-deployment-the-wordpress-com-story/ )
我们有一个网络农场,每个站点都位于两台服务器上,用于故障转移。我们希望自动化部署到我们的开发服务器、测试服务器和产品服务器的过程。Out 网站是 ASP.Net 网站(不是 Web 应用程序),所以我们不进行构建,我们只是推送页面。根据许多变量,我们通常每天更改 2-20 次我们的主站点。这些更改可以是添加新页面/功能的简单文本/html 更改。
目前我们使用 TFS 进行源代码控制,每个站点都是自己的存储库。我们没有分支,您在需要审查时手动将您的更改推送到 dev(我们在本地机器上开发),然后在签署后您签入您的更改并将它们手动推送到 prod(这可以确保源文件是实际在产品上的内容,然后合并发生)。显然,这里有很大的错误空间,而且这种情况很少发生,开发人员忘记了一个关键文件并导致整个站点崩溃。
似乎大多数部署工具都建立在构建过程之上,这不是我们可能会采用的东西,因为我们需要非常敏捷地满足我们的业务需求。我们认为,我们真正想要的是以下内容:
- 开发人员从源代码控制中获取最新版本的网站,本质上是生产的副本
- Dev确实在他自己的盒子上工作。
- 当任务所有者准备好对其进行审查时,他会创建某种形式的变更集(检查变更或其他),然后一个工具会将变更推送给开发人员
- 在审查(以及进一步可能的更改)之后,开发人员能够让该工具推送此任务的所有更改以进行测试(UAT)
- 在此注销后,更改会自动推送到 prod 并签入 prod 分支或其他任何内容,以供其他人获取
我们玩弄了在 TFS 中拥有三个代码分支的想法,但我们不确定您将如何从一个分支(prod)中提取但签入到 dev 分支(我们都不是 TFS 专家)。
那么,其他人是如何处理这种情况的呢?如果有什么东西可以做我们想要的,我们不会将 TFS 作为源代码控制提供者,我们也不需要垂直解决方案,我们非常乐意插入不同的组件,只要它们可以插入,甚至在必要时开发我们自己的。
提前致谢。