2016-03-31 9 views
0

Wir verwenden liquibase für unsere Datenbankversionierung. Wir verwenden es, um die Datenbankänderungen auf jeder Ebene zu implementieren, zB TST, AT und PROD.Wir erstellen einmal und implementieren die gleichen Änderungen überall, aber wir haben bestimmte Dinge, die auf bestimmte Ebene bereitgestellt werden sollten. Ich bin nicht sicher, ob dies möglich ist oder nichtUmgebungsspezifische Änderungen aus dem liquibase-Skript ausführen

z

Angenommen, wir speichern die URL der App in der Datenbank und jede Umgebung (INT, UAT, PROD) hat eine eigene URL für die App. Wie können wir dies mit dem liquibase-Skript tun?

Antwort

1

Sie können die Attribute contexts und labels verwenden, die für Changesets und Befehle verfügbar sind, um das zu erreichen, was Sie wollen. Hier

This Liquibase blog post goes into detail. ist ein Zitat aus diesem Artikel beschreiben Contexts:

Contexts in Liquibase haben noch eine ganze Weile zur Verfügung, und sie begann in erster Linie als eine Möglichkeit der „Tagging“ Change so können sie sein zur Laufzeit ausgewählt. Eine häufige Verwendung ist das Markieren von ChangeSets, die Testdaten als context = "test" einfügen, so dass Sie in Ihrer Entwicklungs- und QA Umgebung liquibase mit -contexts = test ausführen können, um die Testdaten zu erhalten und in der Produktion mit - contexts = prod keine Testdaten haben. Kontexte sind auch hilfreich für die Kennzeichnung von ChangeSets basierend auf Feature-Sets (context = "shoppingCart") oder Bundle (context = "pro") oder sogar Kunden (context = "acme_inc"). Für komplexe Fälle können mehrere Kontexte auf ein changeSet angewendet werden, wie context = "acme_inc, pro" und mehrere Kontexte können zur Laufzeit ausgewählt werden wie -contexts = free, qa.

Mit Liquibase 3.2 wurde Unterstützung für Kontextausdrücke in changeSets hinzugefügt. Wenn Sie jetzt Ihr changeSet definieren, können Sie komplexe Logik wie context = "! Test" oder context = "qa oder (acme_inc und dev)" angeben. Die Kontextlogik kann jedoch nur in Ihrer changeSet Definition angegeben werden. Wenn Sie Liquibase ausführen, können Sie immer noch mehrere Kontexte angeben, aber Sie listen nur alle Kontexte auf, die auf den aktuellen Liquibase-Lauf anwenden.

Verwandte Themen