Jenkins 如何获取数据库的Flyway版本号

Jenkins 如何获取数据库的Flyway版本号,jenkins,flyway,Jenkins,Flyway,我想提取生产数据库的部署前Flyway版本号,以便在我的持续部署管道(Jenkins)中使用它,以防以后回滚 我怎样才能做到这一点 一种选择是查询flyway history表,但我无法找到一种故障安全的方法来实现这一点。以下一个班轮可以满足您的需要: flyway info | grep Success | tail-1 | cut-f3“-d |”| xargs我已经想出了一个答案,尽管这感觉像是一个大难题。我在migrate中运行--dryRunOutput作为让flyway将版本号输出到

我想提取生产数据库的部署前Flyway版本号,以便在我的持续部署管道(Jenkins)中使用它,以防以后回滚

我怎样才能做到这一点


一种选择是查询flyway history表,但我无法找到一种故障安全的方法来实现这一点。

以下一个班轮可以满足您的需要:


flyway info | grep Success | tail-1 | cut-f3“-d |”| xargs

我已经想出了一个答案,尽管这感觉像是一个大难题。我在migrate中运行--dryRunOutput作为让flyway将版本号输出到屏幕的一种方法,因为出于某种原因,info不会这样做

我将输出读取到一个文件中(因为DOS使管道或传递到变量变得很困难),然后隔离以“Current”开头的输出行。然后,我使用:作为我的delimeter选择第二个令牌。可能有一种更简单的方法,我希望我可以使用flyway信息,而不是迁移,因为我的方法感觉很粗糙,但至少现在可以用了

flyway -dryRunOutput=test.sql migrate | FIND "Current" >currentversion.txt
for /f "delims=" %%x in (currentversion.txt) do set CURRENTVERSIONLINE=%%x
for /f "tokens=1,2 delims=:" %%a in ("%CURRENTVERSIONLINE%") do set CURRENTVERSION=%%b
echo Version  : %CURRENTVERSION%

到目前为止你试过什么<代码>飞行路线信息可能?我已经尝试了所有命令行参数。信息是我希望找到它的地方,但所有这些都显示了可用的迁移。它确实显示了版本号,从技术上讲,可以通过对表进行精神分析来解决问题,但不适合以编程方式获取值。我同意这可能会更容易,但只要不允许无序迁移,那么它应该是状态成功的最后一行,不是吗?是的,所以我一直在想,直到我开始使用undo迁移,它把表弄得一团糟,以至于很难获得我需要的信息。有趣的是,有一些命令(如undo和migrate)显示了版本。问题是我不想执行这些命令。我只想要版本。我想这可能会成为info命令的一个功能请求。如果我在其中完成了(“成功”)撤消,则不确定这是否有效,因为它将取而代之的是这一行。导致误报的是标记为成功的撤消脚本,而不是撤消脚本。