【问题标题】:Managing different publish profiles for each developers in SSDT为 SSDT 中的每个开发人员管理不同的发布配置文件
【发布时间】: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


【解决方案1】:

处理这种事情的一种常见方法——不仅适用于 SSDT 发布配置文件,而且适用于一般的配置文件——是提交文件的通用版本,其名称类似于 DbMain.publish.xml.template,并向开发人员提供说明将文件重命名为 DbMain.publish.xml - 或其他名称 - 和 .gitignore 这个文件的本地副本,允许开发人员进行他们想要的任何更改,但从文件的 .template 版本继承通用设置。

发布配置文件不需要添加到 .sqlproj 以在部署时使用,这只是 Visual Studio 中的一种便利,使它们更易于查找和编辑,因此您无需担心损坏的引用。

您希望避免多个开发人员发布到一个共同的“构建”数据库是正确的,这是令人沮丧的秘诀。

确实,您希望将“构建”数据库作为 CI 流程的一部分发布到其中,这意味着在开发人员推送他们的更改之后。

【讨论】:

  • 目前我以类似的方式进行,但除了我已经推送了配置文件的“共享”版本,然后每个开发人员都应该告诉 git 不要跟踪该文件的更改
  • 是的,所以你已经在正确的轨道上。如果您现在唯一的问题是 .sqlproj 文件中的引用损坏,那么您需要做的就是告诉开发人员不要将他们的本地配置文件添加到项目中。
  • 配置中没有损坏的引用,因为我已将其推送到 git,然后每个人都应该说不要跟踪本地更改。它几乎和你建议的一样,不同的是你没有把这个配置推送到 git
  • 好的,所以如果您遇到的唯一问题是 sqlproj 引用了丢失的文件,那么您可以通过不将单个发布配置文件添加到项目来避免这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-27
  • 2014-04-19
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多