Persistance Flyway - sfrancois99/WIKI GitHub Wiki
FlyWay est un outil de versionning et migration de Bases de Données.
<dependencies>
...
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>
...
</dependencies>
<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>
- 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
- 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'
}
}
}
Erreur : ERROR: Validate failed: Migration checksum mismatch for migration version
Pour cela, il faut installer le plugin Fly Way dans Maven.
<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 :
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