Persistance Flyway - sfrancois99/WIKI GitHub Wiki

<Back | <<Home

Configuration et utilisation Fly Way

FlyWay est un outil de versionning et migration de Bases de Données.

Configuration de FlyWay dans Maven

<dependencies>
    ...
    <dependency>
	<groupId>org.flywaydb</groupId>
	<artifactId>flyway-core</artifactId>
    </dependency>
    ...
</dependencies>

Configuration du plugin FlyWay dans Maven

<properties>
    ...
    <!-- Properties are prefixed with flyway. -->
    <flyway.url>jdbc:postgresql://localhost:5432/nom_application</flyway.url>
    <flyway.user>user_login</flyway.user>
    <flyway.password>user_password</flyway.password>
    ...
</properties>
...
<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <configuration>
        <url>${flyway.url}</url>
        <user>${flyway.user}</user>
        <password>${flyway.password}</password>
    </configuration>
</plugin>

Configuration pour le CI (Jenkins)

Connexion à une BD externe : configuration dans le fichier flyway-testdb.conf

  • Créer un fichier de configuration spécifique, dans le cadre du CI, pour pointer sur une base de données externe.

Nom du fichier : flyway-testdb.conf à placer dans nom_projet/src/main/resources/

Contenu :

flyway.url=jdbc:postgresql://nom_serveur:5444/nom_application
flyway.user=user_login
flyway.password=user_password

Mise à jour des schémas de la BD : configuration dans jenkinsfile

  • Pour mettre à jour les schémas de la BD il faut utiliser la commande repair du plugin de flyway.
  • /!\ Attention ! Il est très important de se placer dans le dossier 'nom_projet' avant de lancer la commande.

Configuration dans jenkinsfile :

stage('Repair test DB') {
    steps {
        dir ('nom_projet') {
            bat 'mvn -Dflyway.configFiles=src/main/resources/flyway-testdb.conf flyway:repair'
        }
    }
}

Problèmes rencontrés avec Fly Way

Problème suite à la modification d'un script sql

Erreur : ERROR: Validate failed: Migration checksum mismatch for migration version

Pour cela, il faut installer le plugin Fly Way dans Maven.

Première configuration du plugin

<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
    <configuration>
        <url>jdbc:postgresql://localhost:5432/nom_application</url>
        <user>user_login</user>
        <password>user_password</password>
    </configuration>
</plugin>

La solution pour résoudre ce problème est d'utiliser la commande mvn flyway:repair ou de créer, dans STS, une config Maven comme suit :
image

Autre configuration du plugin via un fichier de configuration src/main/resources/flyway-localdb.conf

Cette solution est beaucoup plus flexible.

Fichier src/main/resources/flyway-localdb.conf :
Contenu :

flyway.url=jdbc:postgresql://localhost:5432/nom_application
flyway.user=user_login
flyway.password=user_password

Pom.xml :

<plugin>
    <groupId>org.flywaydb</groupId>
    <artifactId>flyway-maven-plugin</artifactId>
</plugin>

Puis dans STS il faut créer une config Maven "run Configuration" comme suit :

Commande : -Dflyway.configFiles=src/main/resources/flyway-localdb.conf flyway:repair

<Back | <<Home

⚠️ **GitHub.com Fallback** ⚠️