Bonsoir,

Je cherche une solution pour deployer de facon automatique des scripts sql incrementiel en passant par GIT.

mon script serait update.php

git pull -u
mysql -uroot -pxxx etc...

cette facon de faire n'est pas souple, cat elle me force avoir q'un seul script sql, et j'aimerais fournir des incrementiels a la place

Une petite idée svp ?

3 réponses


Bonjour,

Je ne connais pas de solution toute faite pour faire ce que tu demandes.
Il y a donc surement une solution existante, directement intégrée à GIT.

Voici juste une piste pour le réaliser toi même :

  • Avoir une répertoire listant les scripts SQL, dont le nom contient un identifiant unique croissant (séquence, date du script, ...)
  • Avoir un fichier ne contenant que l'identifiant du dernier script utilisé lors de la dernière éxécution du script update.php

Le script update.php var récupérer le dernier identifiant de script, ainsi que la liste des scripts SQL, trié par date de création.
Tant que l'identifiant du script SQL est inférieur ou égal à celui retrouvé dans le fichier, le script SQL est ignoré.
Si l'identifiant du script est supérieur au dernier identifiant, update.php va éxécuter le script SQL.

Une fois la liste des scripts SQL bouclée, update.php met à jour l'identifiant du dernier script SQL éxécuté.

Les scripts SQL peuvent être gérés par GIT.
Le dernier identifiant utilisé ne doit pas être géré par GIT si les utilisateurs de GIT possèdent des bases différentes. Cet identifiant correspondre à la base de données utilisée.
Si en revanche, il n'y a qu'une seule base de donnée, il peut être géré par GIT.

Je ne sais pas si ce système est 100% viable, mais je pense qu'il peut au moins apporter une piste de réflexion.

Je pense que tu recherches quelque chose comme les migrations (http://guides.rubyonrails.org/active_record_migrations.html, http://laravel.com/docs/5.0/migrations) !

Personnellement j'utilise les migrations avec Phinx