【问题标题】:Get Changesets Associated With Build获取与构建相关的变更集
【发布时间】:2015-02-24 23:04:35
【问题描述】:

在 TFS(2013 更新 4)中,我正在尝试编写一个 PowerShell 脚本来复制与构建相关的修改后的 SQL 文件。如果我知道变更集编号,我可以获取并复制适当的文件,这通常就足够了(当构建由合并触发时,我可以使用 TF_BUILD_SOURCEGETVERSION 环境变量)。但是,偶尔会有一些与 TFS 中的构建相关联的变更集。

使用内部版本号,我如何获得变更集列表?

【问题讨论】:

  • 这是为了发布目的吗?如果是这样,那么使用 SSDT 并在发布过程中发布数据库架构会为您提供更好的服务。
  • @DanielMann 是的,它将作为构建后脚本运行。也许我们会做得更好,但是流程(和 DBA)要求我们必须通过手动创建的(由 DBA)一组部署脚本来处理 SQL 部署(模型更改、数据更新、过程更改等)。 DBA 使用我们在网络文件夹中提供的文件来创建脚本。现在,团队负责人必须手动收集列表并手动复制文件。我只是希望消除我们的手动流程,因为这比改变 DBA 做事的方式要容易得多。

标签: powershell tfs tfsbuild


【解决方案1】:

您需要使用您的内部版本号来查找之前的内部版本号。然后,您将拥有一个开始变更集(从以前的构建)到当前变更集(当前构建)。

然后,您可以使用 API 找出所有中间的变更集。

【讨论】:

    【解决方案2】:

    所以我在上一次参与中已经做到了这一点,本质上我们通过获取所有 SQL 相关文件来解决这个问题,每次构建并生成一个 csv 文件,其中包含有关每个文件、名称、版本的信息,最重要的是文件的 MD5 哈希。然后在每次部署中,我们创建/更新/插入数据库中的一个特殊部署表,所有 SQL 都针对该数据库“运行”。然后我们的构建脚本实际上只是生成 csv 文件,但我们的部署脚本具有智能并检查 csv 文件与目标数据库中是否有任何更改,并且仅应用更改(新 SQL,使用新 MD5 更改的 SQL)。所以我们基本上使用了两个脚本。我不能分享脚本,但你有这个想法。我也想看看亚历山大的这篇文章 Automating SQL Server Database Deployments: Scripting Details 在那里他解释了很多关于数据库迁移的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-01
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多