Aller au contenu principal

Exécution & Intégration CI/CD


Exécution Manuelle des Migrations​

Pour exécuter les migrations en attente localement ou manuellement sur un environnement spécifique :

mvn flyway:migrate ^
-Dflyway.url=jdbc:postgresql://localhost:5432/TrizTresorie ^
-Dflyway.user=postgres ^
-Dflyway.password=VOTRE_MOT_DE_PASSE

Lorsque vous exécutez cette commande, Flyway va :

  1. Vérifier la table flyway_schema_history.
  2. Détecter quelles migrations ont déjà été exécutées.
  3. Exécuter uniquement les nouvelles migrations en attente, dans l'ordre des versions.
  4. Enregistrer automatiquement l'historique d'exécution.

Intégration CI/CD​

Dans votre pipeline de déploiement, l'étape de migration de la base de données doit se produire avant le démarrage du serveur d'application (par ex., Tomcat).

Exemple d'Étape de Runner​

# --------------------------------------------------
# Exécuter les migrations de base de données
# --------------------------------------------------
- name: Run database migrations
shell: cmd
run: |
cd %WORKSPACE_DIR%
mvnw.cmd flyway:migrate ^
-Dflyway.url=%DB_URL% ^
-Dflyway.user=%DB_USER% ^
-Dflyway.password=%DB_PASSWORD%

[!IMPORTANT] Stockez les identifiants de la base de données en toute sécurité à l'aide de secrets CI/CD ou de variables d'environnement. Ne codez pas en dur les mots de passe dans les scripts du dépôt.


Flux de Déploiement Final​

Une séquence de déploiement standard et sûre utilisant Flyway doit suivre ces étapes :

  1. Cloner le code source.
  2. Compiler l'application.
  3. Arrêter Tomcat.
  4. Sauvegarder les fichiers de configuration.
  5. Déployer les nouveaux artefacts de l'application.
  6. Restaurer les fichiers de configuration.
  7. Exécuter les migrations Flyway.
  8. Démarrer Tomcat.
  9. Nettoyer l'espace de travail.

Référence de Structure de Projet​

Pour référence, un projet correctement configuré aura une structure similaire à celle-ci :

project/
│
├── src/
│ └── main/
│ └── resources/
│ └── db/
│ └── migration/
│ ├── V1__initial_schema.sql
│ ├── V2__task301_add_tables_t1_t2.sql
│ ├── V3__add_client_phone.sql
│ └── V4__fix_indexes.sql
│
├── pom.xml
└── mvnw.cmd