Pregunta

Después de leer el " Flujo de trabajo de PHP moderno " artículo en la edición de noviembre de 2008 de php | architect magazine que discutió las pruebas de unidad ( phpUnit ), construya herramientas ( Phing ) e integración continua ( Xinc ) Estoy inspirado en aprender más sobre algunas de las herramientas disponibles para PHP, especialmente Phing.

En el pasado, a menudo manejaba la implementación en un servidor de producción ejecutando el sitio en vivo como una copia de trabajo de Subversion y simplemente ejecutando una actualización " svn update " en la caja de producción para desplegar la última versión del código.

¿Usas herramientas de compilación para el código PHP? ¿Qué ventajas cree que ofrecen sobre el despliegue directo desde Subversion? ¿Qué debo tener en cuenta, o qué errores puedo enfrentar?

¿Fue útil?

Solución

He usado tanto Phing como Ant y prefiero este último mucho más. Inicialmente opté por Phing porque estaba escrito en PHP, pero para ser sincero, no es tan maduro como Ant. Al final, tener un sistema de construcción maduro con una comunidad grande vale más.

Cosas hechas con Ant / Phing:

  1. Desde un checkout base a un idioma específico, asegúrese de que haya dependencias (otras librerías, directorios, etc.)
  2. si los tiene, compile plantillas, etc.
  3. Lleve la base de datos de destino a la versión requerida, dependiendo de la versión del código extraído
  4. ejecutar pruebas unitarias, etc.

Otros consejos

Un gran problema que veo con Phing es que crea una capa innecesaria de direccionamiento indirecto. PHP es un lenguaje de scripting, y por lo tanto podría ejecutarse directamente. El uso de la configuración XML por parte de Phing no es adecuado para el lenguaje: proporciona una configuración declarativa más legible, pero a costa de sacrificar la flexibilidad del lenguaje. Con Ant (la inspiración para esa ruta) tiene sentido ya que Java no tenía esa flexibilidad ya que es menos dinámico y requiere compilación.

Lamentablemente, no he visto muchas buenas alternativas en el espacio de PHP y, a diferencia de otros lenguajes, las herramientas de compilación no son tan esenciales o no forman parte de la cultura, por lo que la evolución de otra opción bien soportada puede no suceder pronto. p>

Por lo tanto, me atendría a las opciones que están más cerca de lo que PHP podría hacer con las culturas que apoyan más agresivamente las herramientas de construcción. Normalmente uso Gradle . Rake también hace un gran trabajo dependiendo del idioma en el que quieras hacer trampa (y puede haber otras opciones similares) ). También debes sopesar cosas como el soporte de Webdriver si te gusta ese tipo de cosas. De lo contrario, crear una solución liviana con PHP y / o BASH debería cubrir todo mientras se mantiene la transparencia

Miré a Phing porque se ve bastante impresionante. Para el proyecto en el que estoy trabajando, estoy usando Ant de Apache . Lo uso para hacer varias cosas:

  1. Combine y comprima Javascript y CSS (la compresión se realiza con el YUI Compressor
  2. Reemplace los archivos de configuración estándar con los archivos de configuración de producción (por ejemplo, cambie el nombre de config.php.production a config.php)
  3. Eliminar archivos innecesarios (como el archivo de compilación ant, build.xml)

Creo que vale la pena mirar Phing a través de Ant porque es PHP nativo, lo que podría ser bueno. Además, si está haciendo algo más que simplemente copiar / mover archivos, tenga en cuenta los problemas de rendimiento cuando se mude al entorno de producción. Tuve un problema donde el compresor YUI funcionaba bien en mi máquina local, pero en el VPS relativamente pequeño era muy lento.

En un proyecto en el que estoy trabajando ahora estamos usando phpUnderControl para ejecutar pruebas y obtener retroalimentación rápida cuando algo está roto. Planeamos usarlo para ejecutar otras pruebas, como algunas escritas en Watir .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top