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

时间:2018-01-12 16:42:17

标签: jenkins flyway

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

我怎样才能做到这一点?

一个选项是查询flyway历史记录表,但我无法找到实现此目的的故障安全方法。

2 个答案:

答案 0 :(得分:1)

我已经找到了答案,虽然感觉像是一个大黑客。我在迁移中运行了--dryRunOutput,作为让flyway将版本号输出到屏幕的方法,因为信息由于某种原因没有这样做。

我将输出读入文件(因为DOS使得管道或传入变量很难)然后隔离输出行以" Current"开头。然后我使用以下方式选择第二个令牌:作为我的分隔符。这可能是一种更简单的方法,我希望我可以使用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%

答案 1 :(得分:0)

以下单行做你想做的事:

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