为了让我的生活更轻松,目前我们有 4 名开发人员在 Visual Studio 2012 中工作,我们正在使用 TFS 2012 进行源代码控制。我们从事的项目是一个多租户 Web 应用程序(具有多个 db 的单个源目录),它混合了旧版、asp 和 vb6 com 组件,以及新的 C# 代码。我们使用 TFS 进行源代码控制以及管理用户故事和错误。由于我们网站的工作方式,它不能仅在服务器上本地运行或调试。源代码控制当前为每个开发人员设置了一个单独的分支,其工作目录映射到开发服务器上的共享网络路径,该路径在 IIS 中有一个指向它的网站。Dev01-Dev05 等。开发人员在他们的分支中处理项目,使用他们的开发网站对其进行测试,然后将更改签入到他们自己的分支中并将它们合并到主干中。
很长的解释,但基本上每个开发人员都有一个分支和一个站点,然后将它们合并到具有自己站点的主干中。
为了部署我们的登台服务器:
- 我通过服务器上的 bat 文件编译了主干的网站
- 运行我构建的 Windows 应用程序以查询 TFS 以查找与处于特定状态的特定 WorkItems 关联的变更集,并将这些变更集的所有文件从发布文件夹复制到部署文件夹。
- 在服务器上运行另一个 bat 文件以使用 RedGate 的部署管理器从这些新文件创建一个包
- 转到我们网络上的 DM 站点以创建和部署该版本(无法让命令行工具为此工作,所以我必须手动完成)
- 运行已保存在与每个数据库(大约 10 个客户数据库)上的票号匹配的文件夹中的任何 SQL 脚本以支持发布
我尝试过使用 TFS 自动构建的东西,但从来没有真正得到它来正确构建网站。玩巡航控制也收效甚微。使用混杂的臭鼬工程项目来做到这一点非常耗时且充其量是不可靠的。
我的完美场景是:
- 门控签入,每次开发人员合并到主干时尝试构建/发布,如果构建失败则拒绝并通知开发人员。
- 一天结束时收集特定状态的 TFS 项目并将与它们关联的文件部署到暂存站点
- 在暂存的所有客户数据库中为这些 TFS 项目部署 SQL 脚本
- 最终*运行自动化回归 UI 测试,如果失败,创建新的工作项或电子邮件给开发人员
- 将 TFS WorkItems 更新为新状态,以便 QA/客户知道他们的项目已准备好在我们的暂存环境中进行测试
- 发送成功部署哪些项目的报告
我怎样才能到达这里,这样我就不用花费数小时来准备和部署发布到暂存和最终生产?对潜在的解决方案非常开放,很难改变的东西是我们正在使用的源代码控制,不能真正切换到颠覆或其他东西,所以我们非常坚持使用 TFS。
谢谢