从liquibase脚本运行特定于环境的更改

时间:2016-03-31 14:24:43

标签: oracle liquibase liquibase-hibernate

我们正在使用liquibase进行数据库版本控制。我们使用它来将数据库更改部署到任何层,例如TST,AT和PROD。我们构建一次并将相同的更改部署到任何地方但我们有某些事情应该部署到特定层。我不确定这是否可行或不

e.g。

假设我们将应用程序URL存储在数据库中,并且每个环境(INT,UAT,PROD)都有自己不同的应用程序URL。我们如何使用liquibase脚本来做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用可用的contextslabels属性来更改集和命令,以实现您的目标。

This Liquibase blog post goes into detail.以下是该文章中引用上下文的引用:

  

Liquibase中的上下文已经有很长一段时间了   最初主要是作为一种“标记”changeets的方式,因此它们可以成为   在运行时选择。一个常见用途是标记插入的changeSet   测试数据为context =“test”,以便在您的开发和QA中   您可以使用-contexts = test运行liquibase来获取   测试数据和生产中你使用-contexts = prod运行没有   测试数据。上下文也有助于基于标记changeSet   功能集包括(context =“shoppingCart”)或包   (context =“pro”)或甚至客户(context =“acme_inc”)。对于复杂   例如,多个上下文可以应用于诸如的changeSet   context =“acme_inc,pro”和多个上下文可以在运行时选择   例如-contexts = free,qa。

     

使用Liquibase 3.2,为中的上下文表达式添加了支持   变更。现在,当您定义changeSet时,您可以指定   复杂的逻辑,如context =“!test”或context =“qa或(acme_inc和   DEV)”。只能在changeSet中指定上下文逻辑   然而,定义。运行Liquibase时,您仍然可以指定   多个上下文,但你只是列出了所有的上下文   适用于目前的Liquibase运行。

相关问题