如何防止在PROD中无法提供Liquibase Context?
How to prevent failure to provide Liquibase Context in PROD?
如果没有上下文作为 运行 时间参数提供,我非常担心忽略变更集上下文的 Liquibase 行为。
我正在设置我的第一个 Liquibase 项目,使用“开发、测试、生产”作为变更集中的上下文。我从 Spring Boot application.properties 传递上下文,它将有不同的开发、测试等版本。因此 PROD 版本将有 spring.liquibase.contexts=产品。到目前为止,还不错。
但是,如果从现在起多年后,该行以某种方式被意外删除或注释掉,会发生什么情况?或者,如果有人碰巧 运行 Liquibase 反对 PROD 并且不提供“prod”作为上下文怎么办?
在我看来,所有未标记为“prod”的先前变更集将 运行。这将包括任何标记为“测试”的插入测试数据,或者——上帝保佑——删除表格……更糟糕的是,它们会运行乱序。
我了解 Liquibase 确实建议包括“测试”-only 变更集以及其他所有内容,并使用“测试”上下文(仅)来区分它们。
所以。我是否认为这是一场等待发生的潜在灾难?有什么办法可以避免这种情况吗?
谢谢你,Whosebugs!!
是的,你是对的,潜在的灾难可能发生。在您描述的过程中,它也可能以许多其他方式发生。这种设计是有意的 b/c 大多数人不使用上下文,因此当您进行 liquibase 更新时,大多数人希望所有变更集都 运行。
我在不同地方看到的安全网:在您的 cicd 自动化检测层中围绕 liquibase 命令创建上下文检查。例如那些使用 Jenkins 的,确保在构建之前有一个强制性的上下文参数,甚至 运行.
如果没有上下文作为 运行 时间参数提供,我非常担心忽略变更集上下文的 Liquibase 行为。
我正在设置我的第一个 Liquibase 项目,使用“开发、测试、生产”作为变更集中的上下文。我从 Spring Boot application.properties 传递上下文,它将有不同的开发、测试等版本。因此 PROD 版本将有 spring.liquibase.contexts=产品。到目前为止,还不错。
但是,如果从现在起多年后,该行以某种方式被意外删除或注释掉,会发生什么情况?或者,如果有人碰巧 运行 Liquibase 反对 PROD 并且不提供“prod”作为上下文怎么办?
在我看来,所有未标记为“prod”的先前变更集将 运行。这将包括任何标记为“测试”的插入测试数据,或者——上帝保佑——删除表格……更糟糕的是,它们会运行乱序。
我了解 Liquibase 确实建议包括“测试”-only 变更集以及其他所有内容,并使用“测试”上下文(仅)来区分它们。
所以。我是否认为这是一场等待发生的潜在灾难?有什么办法可以避免这种情况吗?
谢谢你,Whosebugs!!
是的,你是对的,潜在的灾难可能发生。在您描述的过程中,它也可能以许多其他方式发生。这种设计是有意的 b/c 大多数人不使用上下文,因此当您进行 liquibase 更新时,大多数人希望所有变更集都 运行。
我在不同地方看到的安全网:在您的 cicd 自动化检测层中围绕 liquibase 命令创建上下文检查。例如那些使用 Jenkins 的,确保在构建之前有一个强制性的上下文参数,甚至 运行.