使用 Jenkins 将 Flyway 集成到现有数据库中
Posted
技术标签:
【中文标题】使用 Jenkins 将 Flyway 集成到现有数据库中【英文标题】:Integrating Flyway into an existing database with Jenkins 【发布时间】:2021-11-11 13:36:04 【问题描述】:我们从项目一开始就没有使用 Flyway。我们处于先进的发展状态。让我们开始在我们的 Jenkins 项目中使用 Flyway。
从文档中,我的理解是:
将开发架构(DDL 和 DML)备份为 SQL 脚本文件,给一个文件名,如 V1_0_1__initial.sql。
使用“flyway clean”清理开发数据库。
基线开发数据库“flyway基线 -baselineversion=1.0.0"
现在,执行“flyway migrate”,这将应用 SQL 脚本文件 V1_0_1__initial.sql.
任何新脚本都应该使用更高的版本号编写(例如 V2_0_1__account_table.sql)
这是正确的方法还是有更好的方法?
【问题讨论】:
【参考方案1】:不,这不太对。清理然后再次执行你的 DDL/DML 可能是一个有用的测试,你已经做对了,但是如果你清理数据库,就不需要再设置基线了。
基线的正确顺序是:
将开发架构(DDL 和 DML)备份为 SQL 脚本文件,文件名类似于 V1_0_0_initial.sql
。
在开发中,运行flyway baseline -baselineversion=1.0.0
- 这告诉 Flyway 数据库已经处于 V1.0.0 脚本所代表的状态,不应再次运行。
在其他环境中,运行 flyway migrate
- 以便 Flyway 运行 V1.0.0 脚本。您的各种环境现在应该处于相同的状态
任何新脚本都应该使用更高的版本号编写,并以flyway migrate
应用于每个环境
【讨论】:
以上是关于使用 Jenkins 将 Flyway 集成到现有数据库中的主要内容,如果未能解决你的问题,请参考以下文章
使用 Docker 和 Jenkins 自动化 Flyway 迁移