Liquibase 排除任何没有标签的变更集

问题描述 投票:0回答:2

是否可以防止部署没有标签的变更集?

我们希望使用 liquibase 标签根据功能/票据部署变更集。然而,我们有很多没有标签的现有变更集,并且许多开发人员也创建了没有标签的新变更集。通常这很好,我们只需同时部署整个代码库即可。

但是有时我们有一些特定的功能需要单独部署。标签似乎是答案,但我发现任何没有标签的变更集也将被部署。如果我们可以仅部署具有匹配标签的变更集并忽略未标记的变更集,而不是遍历并标记现有变更集,那就太好了。

这是我们典型变更集的示例

--changeset team/domain/repo:1 runOnChange:true labels:"ABCD-1234"
drop procedure if exists schema.procedure();
//
create procedure schema.procedure();
...

变更集还有更多内容,但仅限于必要的内容。

然后使用具有以下属性的 defaultsFile 运行 liquibase 命令:

labels: "ABCD-1234"

那么,是否有可能以某种方式告诉 liquibase 仅部署带有标签的变更集?

mysql database liquibase
2个回答
0
投票

您可以通过使用上下文而不是标签来实现此目的。管理加载测试数据的变更集是 Liquibase 中的常见用例。您希望加载测试数据的变更集在开发和 QA 环境中运行,但不希望它们在生产中运行。标签和上下文都允许您执行此操作。链接的文章包含如何使用它以及最佳实践的示例。

参考资料:


0
投票

参加聚会有点晚了,但可以帮助有同样问题的人。 Liquibase 4.23 对更新期间如何过滤标签/上下文添加了一些更改,现在可以使用此参数排除没有标签的变更集:

mvn liquibase:update -Dliquibase.labels="@<yourLabel>,@<anotherLabel>"

https://docs.liquibase.com/concepts/changelogs/attributes/labels.html

© www.soinside.com 2019 - 2024. All rights reserved.