Soy un desarrollador solitario la mayor parte de mi tiempo, trabajando en varios proyectos grandes, principalmente basados en PHP. Quiero profesionalizar y automatizar la forma en que se manejan los cambios en la base del código, y crear un proceso de integración continua que haga posible la transición al trabajo en equipo sin tener que hacer cambios fundamentales.
Lo que estoy haciendo ahora es tener un entorno de prueba local para cada proyecto; Yo uso SVN para cada proyecto; los cambios se prueban localmente y luego se transfieren a la versión en línea, generalmente a través de FTP. La documentación de la API se genera manualmente desde el código fuente; Las pruebas unitarias son algo en lo que me estoy metiendo lentamente, y todavía no es parte de mi rutina diaria.
El "ciclo de construcción" que estoy imaginando haría lo siguiente:
Un conjunto de cambios se registra en SVN después de haber sido probado localmente.
Comienzo el proceso de construcción. La revisión de SVN HEAD se desprotege, se modifica si es necesario y se prepara para cargar.
La documentación de API se genera automáticamente; si aún no la configuré en detalle, utilizando una plantilla predeterminada, escaneando toda la base de código.
La nueva revisión se implementa en la ubicación remota a través de FTP (incluyendo algunos cambios de nombre de directorio, modificación de chmodding, importación de bases de datos y similares). Esto es algo por lo que ya me gusta mucho el phing , pero estoy abierto a alternativas, por supuesto.
Se ejecutan pruebas unitarias que residen en una ubicación predefinida. Me informan sobre su fracaso o éxito al utilizar el correo electrónico, RSS o (preferiblemente) la salida HTML que puedo obtener y poner en una página web.
(opcionalmente) un archivo de texto "changelog" de usuario final en una ubicación predefinida se actualiza con una parte predefinida del mensaje de confirmación ("Ahora es posible filtrar tanto" foo "como" bar "al mismo tiempo) tiempo). Este mensaje no es necesariamente idéntico al mensaje de confirmación SVN, que probablemente contiene mucha más información interna.
Cosas como métricas de código, verificación de estilo de código, etc., no son mi enfoque principal en este momento, pero a largo plazo, ciertamente lo serán. Las soluciones que traen esto de forma inmediata son muy amables.
Busco
Comentarios y experiencias de personas que están o estuvieron en una situación similar, y han implementado con éxito una solución para esto
Especialmente, buenos tutoriales paso a paso y tutoriales sobre cómo configurar esto
Soluciones que proporcionan la mayor automatización posible , por ejemplo, creando una API esqueleto, casos de prueba, etc. para cada nuevo proyecto.
y también
- Recomendaciones de productos . Lo que sé hasta ahora es phing / ant para la construcción, y phpUnderControl o Hudson para la parte de informes. Me gustan todos hasta donde puedo ver, pero por supuesto no tengo experiencia detallada con ellos.
Estoy lleno de trabajo, por lo que tengo una fuerte inclinación hacia soluciones simples. Por otro lado, si falta una característica, lloraré por que sea demasiado limitada. :) Las soluciones de apuntar y hacer clic también son bienvenidas. También estoy a favor de las recomendaciones de productos comerciales que pueden funcionar con proyectos PHP.
Mi configuración
Estoy trabajando en Windows localmente (7, para ser exactos) y la mayoría de los proyectos de clientes se ejecutan en una pila LAMP, a menudo en un alojamiento compartido (= sin SSH remoto). Estoy buscando soluciones que pueda ejecutar en mi propio entorno. Estoy listo para configurar una máquina virtual Linux para esto, no hay problema. Las soluciones alojadas son interesantes para mí solo si proporcionan todos los aspectos descritos o si son lo suficientemente flexibles como para interactuar con las otras partes del proceso.
Recompensa Estoy aceptando la respuesta que siento me dará la mayor cantidad de millas. Aquí hay muchos comentarios excelentes, desearía poder aceptar más de una respuesta. ¡Gracias a todos!