Запустите изменения среды для скрипта liquibase
Мы используем liquibase для управления версиями нашей базы данных. Мы используем его для развертывания изменений базы данных на любом уровне, например TST,AT и PROD. Мы строим один раз и внедряем одни и те же изменения везде, но у нас есть определенные вещи, которые следует развернуть на конкретном уровне. Я не уверен, возможно ли это или не
например
Допустим, мы храним URL-адрес приложения в БД, и каждая среда (INT, UAT, PROD) имеет свой собственный URL-адрес приложения. Как мы можем сделать это с помощью сценария liquibase?
1 ответ
Вы можете использовать contexts
а также labels
атрибуты, доступные для наборов изменений и команд, чтобы выполнить то, что вы хотите.
Этот пост в блоге Liquibase подробно рассмотрен. Вот цитата из этой статьи, описывающая контексты:
Контексты в Liquibase были доступны в течение достаточно долгого времени, и они начинались в основном как способ "пометки" наборов изменений, чтобы их можно было выбирать во время выполнения. Одним из распространенных применений является пометка наборов изменений, в которые вставляются тестовые данные, как context= "test", чтобы в средах разработки и контроля качества вы могли запускать liquibase с –contexts = test, чтобы получить тестовые данные, а в производственной среде вы запускаете с –contexts = prod не иметь тестовых данных. Контексты также полезны для маркировки наборов изменений на основе наборов функций для включения (context= ”shoppingCart”) или связки (context= "pro") или даже клиента (context= "acme_inc"). Для сложных случаев к контексту изменений можно применить несколько контекстов, например context=”acme_inc, pro”, и во время выполнения можно выбрать несколько контекстов, например –contexts=free,qa.
В Liquibase 3.2 добавлена поддержка контекстных выражений в changeSets. Теперь, когда вы определяете свой набор изменений, вы можете указать сложную логику, такую как context=”! Test” или context=”qa or (acme_inc and dev)”. Однако контекстная логика может быть указана только в вашем определении changeSet. При запуске Liquibase вы все равно можете указать несколько контекстов, но вы просто перечисляете все контексты, которые применяются к текущему запуску Liquibase.