--- sidebar_position: 4 title: "Exécution & Intégration CI/CD" --- # 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 : ```cmd 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 ```yaml # -------------------------------------------------- # 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 : ```text 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 ```