Skip to main content

Liquibase

PostgreSQL

Dev to Stg Scenario

Create properties

export DB_DEV=jdbc:postgresql://127.0.0.1:5432/project_demo_dev
export DB_STG=jdbc:postgresql://127.0.0.1:5432/project_demo_stg

Init ChangeLog from DEV

liquibase generateChangeLog \
--url=$DB_DEV

Install changelog table into source DB

liquibase update-sql \
--url=$DB_DEV

liquibase update \
--url=$DB_DEV

Preview difference btw DEV and STG

liquibase diff \
--url=$DB_STG \
--referenceUrl=$DB_DEV

Generate changelog from snapshot to STG DB

liquibase diffchangelog \
--url=$DB_STG \
--reference-url=$DB_DEV
liquibase update-sql \
--url=$DB_STG

liquibase update \
--url=$DB_STG

liquibase tag init \
--url=$DB_STG

DEV DB Schema changed...

Generate change log again

liquibase diffchangelog \
--url=$DB_STG \
--reference-url=$DB_DEV

Update STG DB

liquibase update \
--url=$DB_STG

liquibase tag release1 \
--url=$DB_STG

DEV DB Schema changed again...

liquibase diffchangelog \
--url=$DB_STG \
--reference-url=$DB_DEV

liquibase update \
--url=$DB_STG

liquibase tag release2 \
--url=$DB_STG

Rollback previous tag

liquibase rollback-sql \
--url=$DB_STG \
--tag=release1

liquibase rollback \
--url=$DB_STG \
--tag=release1

Use Snapshot

Snapshot DEV DB into snapshot.yaml

liquibase snapshot \
--url=$DB_DEV \
--snapshotFormat=yaml \
--outputFile=snapshot.yaml

Use snapshot to compare, generate change log for STG

liquibase diffchangelog \
--url=$DB_STG \
--reference-url=offline:postgresql=snapshot.yaml