Azure devops 在Azure Devops上自动化FluentMigrator回滚

Azure devops 在Azure Devops上自动化FluentMigrator回滚,azure-devops,azure-deployment,fluent-migrator,Azure Devops,Azure Deployment,Fluent Migrator,目前有一个发布管道,它向上运行我的迁移项目- e、 g web应用程序项目已部署到环境中 在解决方案中,我们有一个fluent migrator项目 作为发布管道的一部分,我们运行向上迁移到最新版本 以上所有这些都很好,但如果我想将web应用回滚到早期版本,那么我需要以某种方式将我想回滚到的版本传递到fluent migrator进程中-目前我不确定如何实现这一点。这几乎就像我需要知道以前版本中部署的版本一样 目前,我回滚必须手动运行fluent migrator才能回滚到所需数据库版本的w

目前有一个发布管道,它向上运行我的迁移项目- e、 g

  • web应用程序项目已部署到环境中
  • 在解决方案中,我们有一个fluent migrator项目
  • 作为发布管道的一部分,我们运行向上迁移到最新版本
以上所有这些都很好,但如果我想将web应用回滚到早期版本,那么我需要以某种方式将我想回滚到的版本传递到fluent migrator进程中-目前我不确定如何实现这一点。这几乎就像我需要知道以前版本中部署的版本一样

目前,我回滚必须手动运行fluent migrator才能回滚到所需数据库版本的web应用程序

有人完全自动化了fluent migrator回滚吗

仅供参考,我的迁移编号使用从中获取的日期时间(毫秒)

更新:

我有一个计划,以某种方式获得项目中的最新迁移,并使用该数字作为参数,要么运行到它,要么运行到它。但是,仔细考虑之后,作为版本一部分运行的迁移只知道在构建该版本中的代码时存在的迁移。它不可能知道任何后续迁移,从而能够回滚数据库


我想我需要以某种方式提取最新的代码,构建它,然后运行适当的迁移。我不确定这是否可能。可能必须坚持手动数据库回滚过程。

一个不太优雅的解决方案是将所有迁移标识符附加到作为部署工件一部分的文件中。通过这种方式,前向迁移使用最后一个条目,后向迁移使用倒数第二个条目。

一个不太优雅的解决方案是将所有迁移标识符附加到作为部署工件一部分的文件中。通过这种方式,前向迁移使用最后一个条目,后向迁移使用倒数第二个条目。

但在一个版本中可能会有任意数量的新迁移,因此这不起作用。我所能想到的只是知道上一个版本中的最后一个迁移号,但我认为如果将迁移ID与代码ID(例如提交哈希)联系起来,那么就没有(相对)简单的方法来匹配它们。另一种方法可能是扫描版本控制历史记录(例如,
git log
)以查找标识符的范围。我想知道我是否可以在发布时以某种方式获取最后一个迁移id(不确定如何…?某种文件解析?),将该id保存到azure变量,然后将其传递到fluent migrator应用程序-通过这种方式,DB可能会运行到特定的迁移中,也可能运行到特定的迁移中。我查看了fluentmigrator,您可以选择扩展
VersionInfo
表,使其携带ReleaseId。这将使确定回滚从何处开始变得容易。不过,在一个版本中可能会有任意数量的新迁移,所以这不起作用。我所能想到的只是知道上一个版本中的最后一个迁移号,但我认为如果将迁移ID与代码ID(例如提交哈希)联系起来,那么就没有(相对)简单的方法来匹配它们。另一种方法可能是扫描版本控制历史记录(例如,
git log
)以查找标识符的范围。我想知道我是否可以在发布时以某种方式获取最后一个迁移id(不确定如何…?某种文件解析?),将该id保存到azure变量,然后将其传递到fluent migrator应用程序-通过这种方式,DB可能会运行到特定的迁移中,也可能运行到特定的迁移中。我查看了fluentmigrator,您可以选择扩展
VersionInfo
表,使其携带ReleaseId。这将很容易确定回滚从何处开始。几天内都没有收到您的回复,请您分享有关此问题的最新信息。如果Giulio的答案解决了您的问题,请您接受它作为答案。这可能对阅读此帖子的其他社区成员有益。如果你有任何问题,请随意在这里分享。我也在尝试同样的事情,但我也需要向上迁移。你是怎么做到的?它是用老方法使用命令(batchfile)还是我需要用另一种方法构建迁移?好几天都没有收到您的回复,请您分享关于这个问题的最新信息?如果Giulio的答案解决了您的问题,请你接受它作为答案。这对其他阅读此帖子的社区成员是有益的。如果你有任何问题,请随意在这里分享。我也在尝试同样的事情,但我也需要向上迁移。你是怎么做到的?它是用老方法使用命令(batchfile)还是用另一种方法构建迁移?