2016-03-31 6 views
0

データベースのバージョン管理にliquibaseを使用しています。私たちは、TST、AT、PRODなどの任意のレイヤーにデータベースの変更を展開するために使用します。一度構築してすべての場所に同じ変更を展開しますが、特定のレイヤーに展開する必要があるものがあります。 notliquibaseスクリプトから環境固有の変更を実行します

アプリのURLをDBに保存し、それぞれの環境(INT、UAT、PROD)にはそれぞれ異なるアプリのURLがあるとします。どのようにしてliquibaseスクリプトを使ってこれを行うことができますか?

答えて

1

チェンジセットとコマンドで使用できる属性は、contextslabelsです。ここで

This Liquibase blog post goes into detail.は、コンテキストを記述し、その記事からの引用です:LiquiBaseを中

コンテキストはかなりしばらくの間、利用されている、と彼らはできるように、彼ら は、主に「タグ付け」チェンジの方法としてスタート実行時に が選択されました。 1つの一般的な使用方法は、 テストデータをcontext = "test"として挿入するchangeSetsをマークすることです。開発およびQA 環境では、-contexts = testでliquibaseを実行して テストデータを取得し、 contexts = prodには のテストデータがありません。コンテキストは、 フィーチャーセット(context = "shoppingCart")またはバンドル (context = "pro")または顧客(context = "acme_inc")を含むchangeSetsをマーキングする場合にも役立ちます。複雑な の場合、 context = "acme_inc、pro"などの複数のコンテキストをchangeSetに適用することができ、複数のコンテキストは-contexts = free、qaなどの実行時に を選択できます。

Liquibase 3.2では、 changeSetsのコンテキスト式のサポートが追加されました。これで、changeSetを定義するときに、context = "!test"やcontext = "qaまたは(acme_incと dev)などの複雑なロジックを と指定することができます。ただし、コンテキスト・ロジックはchangeSet 定義でのみ指定できます。 Liquibaseを実行しているときには、 の複数のコンテキストを指定することはできますが、現在のLiquibaseの実行に適用するコンテキストはすべて にするだけです。

関連する問題