使用 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 集成到现有数据库中的主要内容,如果未能解决你的问题,请参考以下文章

飞路集成到现有系统中

Flyway with Jenkins - 无法解析位置

生产数据库中的 Flyway 集成

使用 Docker 和 Jenkins 自动化 Flyway 迁移

如何在将通用工件上传到jenkins管道中的JFrog Artifactory时重命名现有文件夹

Flyway 与 Git 集成并连接到 Snowflake