Présentation Liquibase mise à jour pour être plus exhaustive (v2.0.5) avec une démo plus complète.
Merci de mentionner "Florent Biville" en tant qu'auteur original si vous souhaitez reprendre cette présentation.
13. Changeset ~ unité de migration
Identité = Path + ID + Auteur
<changeSet id="exemple_de_changeset" author="florent.biville">
<comment>Vente en ligne de minitels</comment>
<createTable tableName="minitels"
remarks="EVOL-42">
<column name="id" type="INTEGER" />
</createTable>
</changeSet>
joué une seule fois sauf si runAlways="true"
changements ensuite interdits sauf si runOnChange="true"
14. Changeset ~ unité de migration
Pourquoi XML* ?
1. indépendance vendor
2. rollback automatique
3. utilisation SQL possible ;-)
* ou JSON/YAML/"SQL annoté"
15. Changeset ~ rollback
Rollback manuel (SQL ou tags Liquibase standards)
<changeSet id="exemple_de_changeset" author="florent.biville">
<comment>Vente en ligne de minitels</comment>
<sql>UPDATE Persons SET age = age + 42;</sql>
<rollback>
UPDATE Persons SET age = age - 42;
</rollback>
<!-- <rollback /> pour désactiver le rollback sur un changeset -->
</changeSet>
16. Preconditions
Requête custom ou tags Liquibase standard
<changeSet id="only_as_system" author="florent.biville">
<comment>Un grand pouvoir implique...</comment>
<preConditions><!-- DRY: <xi:include href="../common/run_as_system.xml" /> -->
<dbms type="oracle" />
<runningAs username="SYSTEM" />
</preConditions>
<!-- danger! high voltage! -->
</changeSet>
17. Context
Contexte paramétré à l'exécution
<changeSet id="exemple_contexte" context="local,test"
author="florent.biville">
<!-- danger! high voltage! -->
</changeSet>
il suffit qu'un seul des contextes corresponde
19. Stratégies pour l'existant : initialisation
Stratégie n°1 Stratégie n°2 Stratégie n°3
Définir 1 état de
référence.
Définir toutes les
migrations à partir de
cet état.
Inclure un changeset
de dump de la BDD
de référence.
Définir les migrations
ensuite.
Reconstruire toutes
les migrations
manuellement.
Y ajouter ensuite un
changeset de dump
de données.
20. Stratégies pour l'existant : initialisation
Stratégie n°1 Stratégie n°2 Stratégie n°3
+ simple
- récupération /
exécution du dump à
la charge de chaque
user
+ simple
- couplage fort avec
le vendor de BDD
+ indépendance vis-
à-vis du vendor
- fastidieux
21. Stratégies pour l'existant : intégration
Spring Maven CLI
Utiliser le bean
SpringLiquibase.
Idéal pour
déploiement sur
PAAS.
Utiliser le plugin
Maven.
Idéal pour la CI, aussi
riche en options que
le client CLI.
Utiliser l'utilitaire en
ligne de commandes.
"Implémentation" de
référence.
autres modes disponibles: Ant, listener de Servlet