Question

Après avoir lu le flux de travaux "Modern PHP" " article dans le édition de novembre 2008 de php | architect magazine , qui discuté des tests unitaires ( phpUnit ), de la construction d'outils ( Phing ) et intégration continue ( Xinc ) , Je suis inspiré pour en apprendre davantage sur certains outils disponibles pour PHP, en particulier Phing.

Dans le passé, j’étais souvent responsable du déploiement sur un serveur de production en exécutant le site actif en tant que copie de travail Subversion et en exécutant simplement un script "svn update". sur la zone de production pour déployer la dernière version du code.

Utilisez-vous des outils de compilation pour le code PHP? Quels sont, selon vous, les avantages qu’ils offrent par rapport au déploiement direct depuis la subversion? Que dois-je rechercher ou quels pièges pourrais-je affronter?

Était-ce utile?

La solution

J'ai utilisé Phing et Ant et je préfère beaucoup plus ce dernier. Je suis initialement allé avec Phing car il était écrit en PHP, mais pour être honnête, il n’est pas aussi mature que Ant. En fin de compte, avoir un système de construction mature avec une grande communauté a plus de valeur.

Ce qui a été fait avec Ant / Phing:

  1. À partir d'une base de paiement localisée dans une langue spécifique, assurez-vous qu'il existe des dépendances (autres bibliothèques, répertoires, etc.)
  2. si vous en avez, compilez des modèles, etc.
  3. Amenez la base de données cible à la version requise, en fonction de la version du code extrait
  4. exécuter des tests unitaires, etc.

Autres conseils

Un problème important que je vois avec Phing est qu’il crée une couche inutile d’indirection. PHP est un langage de script et peut donc être exécuté directement. L'utilisation par Phing de la configuration XML convient mal au langage: elle fournit une configuration déclarative plus lisible, mais au prix de la perte de la flexibilité du langage. Avec Ant (l’inspiration de cette route), cela a du sens puisque Java n’a pas cette souplesse, il est moins dynamique et nécessite une compilation.

Malheureusement, je n'ai pas vu beaucoup de bonnes alternatives dans l'espace PHP, et contrairement à d'autres langages, les outils de construction ne sont pas aussi essentiels ni font partie de la culture. Il est donc possible que l'évolution d'une autre option bien prise en charge ne se produise pas de si tôt.

Je préférerais donc choisir des options plus proches de ce que PHP pourrait créer à partir de cultures prenant en charge de manière plus agressive les outils de développement. J'utilise normalement Gradle . Rake fait également un excellent travail en fonction de la langue avec laquelle vous voulez tricher (et il peut y avoir d'autres options similaires ). Vous devriez également peser des éléments tels que l'assistance Webdriver si vous êtes intéressé par ce genre de choses. Sinon, créer une solution légère en utilisant PHP et / ou BASH devrait tout couvrir, tout en maintenant la transparence

J'ai regardé Phing qui avait l'air génial. Pour le projet sur lequel je travaille, j'utilise en fait Ant Apache's . Je l'utilise pour faire plusieurs choses:

  1. Combinez et compressez Javascript et CSS (compression effectuée à l'aide du YUI Compressor
  2. Remplacez les fichiers de configuration standard par des fichiers de configuration de production (par exemple, renommez config.php.production en config.php)
  3. Supprimez les fichiers inutiles (tels que le fichier ant build, build.xml)

Je pense que Phing vaut la peine d’être examiné par-dessus Ant, car c’est du PHP natif, ce qui pourrait être agréable. De même, si vous faites autre chose que copier / déplacer des fichiers, recherchez des problèmes de performances lorsque vous passez à l'environnement de production. J'ai eu un problème où le compresseur YUI fonctionnait bien sur ma machine locale mais sur le VPS relativement petit, il était super lent.

Sur un projet sur lequel je travaille actuellement, nous utilisons phpUnderControl pour exécuter des tests et obtenir retour rapide quand quelque chose est cassé. Nous prévoyons l’utiliser également pour exécuter d’autres tests, tels que certains écrits dans Watir .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top