【发布时间】:2017-09-01 09:00:06
【问题描述】:
在我们当前的开发中。工作流有主数据库 --> DbMain。有一个过程会获取项目的最新版本并自动将其部署到那里,然后触发单元测试。由于我们希望始终在源代码控制中拥有项目的工作版本,因此每个开发人员都应确保他签入工作代码并且所有测试都将通过。
为此,我们决定为每个具有以下命名约定的开发人员创建单独的数据库 --> DbMain_XX(其中 XX em> 是开发人员的首字母)。因此,每个开发人员在签入之前都应该手动发布对该数据库的所有更改并运行单元测试。为此目的设置发布配置很有用,它是主发布配置的副本,唯一的区别是数据库名称。
这意味着我们将在解决方案中拥有许多不同的发布配置文件,这非常混乱。
如果我们不将这些配置文件添加到源代码管理中,那么 .sqlproj 文件仍将引用这些文件,因此项目将引用不存在的文件。
所以实际的问题。我可以为所有将使用变量更改数据库名称的开发人员提供单一发布配置文件吗?例如 DbName_$(dev_initials)?或者我们是否可以让每个开发人员仅在本地拥有自己的发布配置并且不会破坏项目?
更新:
根据 Peter Schott cmets 的说法:
我可以创建本地发布配置文件,但如果我不将其添加到源代码管理,那么它仍然是 sqlproj 文件中的一个条目,但文件本身将不可用。
在本地运行测试至少有两个缺点。第一个是每个人都应该在本地安装 SQL Server。我们主要通过虚拟机工作,那里的磁盘空间非常有限。另一件事是开发人员肯定会忘记或不会每次都手动运行测试。有时他们会在不构建或/和运行测试的情况下将更改推送到 repo。我们希望避免这种情况,并尽快“捕获”失败的构建。
提到的另一种方法是拥有 1 个通用构建数据库。就我而言,我们有一个(DbMain)。所有开发人员都可以根据需要使用它,但我们肯定会发现 2 个开发人员同时发布的情况,通过找出真正的问题可能会造成很多混乱。
【问题讨论】:
-
您绝对可以在本地创建发布配置文件以不破坏项目,但是在本地构建并在那里运行测试或者拥有一个带有签入/提交的通用构建数据库会更有意义,从而破坏了构建提升标志而不是每人创建一个数据库? (不要把它变成一个包含关键数据的数据库 - 只是构建或不构建的东西,可能首先使用测试数据。)
-
@PeterSchott 我已经更新了问题
标签: sql-server visual-studio sql-server-data-tools