我应该在git中存储用于自动化测试的数据库备份吗?

时间:2015-02-25 17:28:32

标签: git continuous-integration

我们目前正在尝试将自动集成测试添加到我们的持续集成(CI)流程中。我们的CI流程正在使用TeamCity,并且已经构建了我们的.NET解决方案,运行NUnit测试并通过Octopus Deploy进行部署。它是一个典型的Web应用程序,使用SQL Server数据库。

所有代码和单元测试都在Git仓库中。

现在,自动化测试已经在TestComplete中编写并且运行良好。在测试运行之前,测试依赖于特定数据存在于数据库中,所以我在规划CI过程之前在运行测试之前恢复数据库。

我几乎肯定这些自动化测试属于与代码相同的repo - 所有测试都应该与代码一起进行版本控制。我不太确定的是数据库备份。我认为我们知道每个版本的测试都使用了哪个数据库备份,这一点很重要,但我读过在Git中存储大型二进制文件并不是一个好主意。目前的备份是40mb。

我在将备份存储在Git中并将其存储在某处的文件共享之间徘徊。我只是担心将来会覆盖数据库备份,然后我们测试的先前版本就会失败。我想虽然想要为以前的版本运行自动化测试并不常见,所以也许这不是问题而且我不必要地担心。有没有其他人遇到过类似的情况?你最终做了什么?

2 个答案:

答案 0 :(得分:0)

我没有遇到过同样的情况,但这就是我如何解决这个问题:

  • 测试应与代码进行相同的回购。如果这不可能,请将它们放在不同的仓库中,但请确保版本保持同步,以便您知道哪组测试适用于代码版本。
  • 将数据库备份文件放在文件共享上。使用具有版本号或时间戳的目录,以便保留多个版本的备份。例如backup-2015-02-26
  • 在您的代码库中,添加指向数据库备份的文件作为参考。使用您的代码库提交和版本化该文件。这样,您将始终知道数据库备份文件与特定版本的代码一起使用。
  • 仅删除您绝对不再需要的数据库备份文件。
  • 确保包含数据库备份文件的文件共享是每日/每周/增量备份计划的一部分。

将数据库备份文件添加到您的代码库中只会让每个人都膨胀,这可能不是您想要的。

答案 1 :(得分:0)

在git存储库中添加太多数据可能会导致大的repo大小,这可能会导致新开发人员的工作效率降低和入门时间过长。

如果CI env可以访问互联网,您最好将数据存储在s3等云服务中。如果没有,除了将这些文件存储在可从CI env和开发人员的本地计算机访问的Intranet上之外,没有太多选择。