1. Merge conflicts across dev, qa, prod branches 2. Inconsistent baselines and forgotten hotfixes 3. Broken audit trails and configuration drift
We shifted instead to a trunk-based approach with Liquibase contexts:
1. All changes stored in one main branch 2. Environment-specific behavior driven by context metadata 3. Promotions handled via pipelines, not merges 4. Full GitOps traceability and one-click rollback support
Recently, we adopted a trunk-based model paired with Liquibase for change management. Instead of branching per env, we:
Keep all changelogs in a single main branch Use Liquibase contexts to control env targeting Promote via automated pipelines Apply GitOps principles for traceability and rollback
Curious—how are others approaching Git branching for DB changes? Is anyone still using GitFlow or feature/env branches? Anyone managing this at scale with other tools like Flyway or Atlas?
Would love to hear real-world stories.
This article shares our transition to a fully automated, GitOps-style workflow using Harness Database DevOps and Liquibase. It dives into technical challenges, architecture changes, and lessons learned while scaling PostgreSQL migrations across multiple environments.
Read the full blog post - https://dub.sh/JMUgbep
Would love to hear how others have tackled this problem at scale.