在我们目前的开发中。工作流有主要的数据库-> DbMain。有一个过程获取项目的最新版本,并在那里自动部署它,然后它会触发单元测试。由于我们希望在源代码管理中始终有项目的工作版本,每个开发人员都应该确保他检查了工作代码,并且所有的测试都会通过。
为此,我们决定为每个遵循命名约定的开发人员创建单独的数据库--> DbMain___XX (其中XX是开发人员的初始)。因此,每个开发人员在签入之前都应该手动发布对数据库的所有更改,并运行单元测试。为此目的设置发布配置是有用的,这是主发布配置的副本,数据库名称的唯一区别就是。
这将引入,我们将有许多不同的发布配置文件在解决方案,这是相当混乱的。
如果我们不将这些概要文件添加到源代码管理中,那么.sqlproj文件仍然会引用这些文件,因此项目将引用不存在的文件。
所以真正的问题。我可以为所有开发人员提供单一的发布配置文件,其中数据库名将使用变量更改?例如DbName_$(dev_initials)?或者,我们是否可以让每个开发人员只在本地拥有自己的发布信息,而不会破坏项目?
更新:
根据彼得·肖特的评论:
我可以创建本地发布配置文件,但是如果我不将它添加到源代码管理中,那么仍然是sqlproj文件中的一个条目,但是文件本身是不可用的。
在本地运行测试至少有两个缺点。首先,每个人都应该在本地安装Server。我们主要是通过虚拟机工作,那里的磁盘空间非常有限。另一件事是,开发人员肯定会忘记或不会每次都手动运行测试。有时,他们会在没有构建或/和运行测试的情况下将更改推送到回购。我们想要避免这种情况和“捕获”失败的建设尽快。
提到的另一种方法是有一个通用的构建数据库。在我的例子中,我们有一个(DbMain)。所有的开发人员都可以使用它来满足它的需要,但是我们肯定会抓住这一情况,当2开发人员同时发布时,这会导致很多混乱,因为我们会弄清楚到底出了什么问题。
发布于 2017-09-05 09:36:02
这种事情的一种常见方法--不仅对于SSDT发布概要文件,而且对于一般的配置文件--是提交一个通用版本的文件,其名称类似于DbMain.publish.xml.template,并向开发人员提供将文件重命名为DbMain.publish.xml (或其他什么)的指示,并将该文件的本地副本命名为.gitignore,允许开发人员进行他们想做的任何更改,但是可以从文件的.template版本继承公共设置。
发布概要文件不需要添加到.sqlproj中才能在部署时使用,这只是Visual中方便查找和编辑它们的一种便利,所以您不需要担心被破坏的引用。
您是正确的,希望避免多个开发人员发布到一个常见的“构建”数据库,这是一个令人沮丧的配方。
实际上,您希望将"build“数据库发布到您的CI过程中,这意味着在开发人员推动他们的更改之后。
https://stackoverflow.com/questions/45996660
复制相似问题