[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-liquibase-kak-ispolzovat-liquibase-v-ci-cd-payplayne":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},966,"kak-ispolzovat-liquibase-v-ci-cd-payplayne",29,"liquibase","Liquibase","💧","Как использовать Liquibase в CI\u002FCD пайплайне?","Liquibase интегрируется в CI\u002FCD двумя основными способами: автоматический запуск при старте приложения (Spring Boot) или отдельный шаг в пайплайне.\n\n### Основные стратегии\n\n**1. Миграции при старте приложения (Spring Boot)**\n\nСамый простой подход — Liquibase запускается автоматически при старте приложения. Подходит для большинства проектов.\n\n```yaml\nspring:\n  liquibase:\n    enabled: true\n    change-log: classpath:db\u002Fchangelog\u002Fdb.changelog-master.xml\n```\n\n**2. Отдельный шаг в пайплайне**\n\nМиграции выполняются отдельным шагом до деплоя приложения. Подходит для сложных сценариев и банковских систем.\n\n\u003Cdetails>\u003Csummary>Пример для GitLab CI\u003C\u002Fsummary>\n\n```yaml\nstages:\n  - validate\n  - migrate\n  - deploy\n\nvalidate-migrations:\n  stage: validate\n  script:\n    - liquibase --changelog-file=db\u002Fchangelog\u002Fdb.changelog-master.xml validate\n    - liquibase --changelog-file=db\u002Fchangelog\u002Fdb.changelog-master.xml status\n\napply-migrations:\n  stage: migrate\n  script:\n    - liquibase --changelog-file=db\u002Fchangelog\u002Fdb.changelog-master.xml\n                --url=$DB_URL\n                --username=$DB_USER\n                --password=$DB_PASSWORD\n                update\n  only:\n    - main\n\ndeploy-app:\n  stage: deploy\n  script:\n    - .\u002Fdeploy.sh\n  only:\n    - main\n```\n\n\u003C\u002Fdetails>\n\n### Maven-плагин\n\n\u003Cdetails>\u003Csummary>Конфигурация Maven-плагина\u003C\u002Fsummary>\n\n```xml\n\u003Cplugin>\n    \u003CgroupId>org.liquibase\u003C\u002FgroupId>\n    \u003CartifactId>liquibase-maven-plugin\u003C\u002FartifactId>\n    \u003Cconfiguration>\n        \u003CchangeLogFile>src\u002Fmain\u002Fresources\u002Fdb\u002Fchangelog\u002Fdb.changelog-master.xml\u003C\u002FchangeLogFile>\n        \u003Curl>${db.url}\u003C\u002Furl>\n        \u003Cusername>${db.username}\u003C\u002Fusername>\n        \u003Cpassword>${db.password}\u003C\u002Fpassword>\n    \u003C\u002Fconfiguration>\n\u003C\u002Fplugin>\n```\n\n\u003C\u002Fdetails>\n\nКоманды:\n\n```bash\nmvn liquibase:update\nmvn liquibase:rollback -Dliquibase.rollbackCount=1\nmvn liquibase:status\nmvn liquibase:diff\n```\n\n### Gradle-плагин\n\n\u003Cdetails>\u003Csummary>Конфигурация Gradle-плагина\u003C\u002Fsummary>\n\n```groovy\nplugins {\n    id 'org.liquibase.gradle' version '2.2.0'\n}\n\nliquibase {\n    activities {\n        main {\n            changelogFile 'src\u002Fmain\u002Fresources\u002Fdb\u002Fchangelog\u002Fdb.changelog-master.xml'\n            url project.ext.dbUrl\n            username project.ext.dbUser\n            password project.ext.dbPassword\n        }\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n### Рекомендации для CI\u002FCD\n\n- **Всегда запускать validate** перед применением миграций — это поймает синтаксические ошибки и проблемы с checksum\n- **Использовать updateSQL** для ревью SQL перед применением на production\n- **Ставить теги** перед каждым релизом для возможности быстрого отката\n- **Отделять миграцию от деплоя** — сначала накатить миграции, потом развернуть новую версию приложения\n- **Использовать отдельного пользователя БД** для Liquibase с правами на DDL, а приложение подключать пользователем с ограниченными правами\n- **Тестировать миграции на чистой БД** — в CI запускать полный цикл миграций на пустой базе\n\n> **На собеседовании:** интервьюер хочет понять, как вы деплоите миграции в реальном проекте. Важно обосновать выбор стратегии. Частая ошибка — не упомянуть validate и updateSQL как обязательные шаги перед продакшен-деплоем.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":19,"featuredSnippetReady":22},"Как использовать Liquibase в CI\u002FCD пайплайне? — Gymterview","Liquibase интегрируется в CI\u002FCD двумя основными способами: автоматический запуск при старте приложения (Spring Boot) или отдельный шаг в пайплайне.","Liquibase интегрируется в CI\u002FCD двумя основными способами: автоматический запуск при старте приложения (Spring Boot) или",[7,13],true]