====== Arreglo de Bug e incorporar nueva funcionalidad ====== En ocasiones se detecta un bug en producción o simplemente queremos añadir una determinada funcionalidad, pero la rama del tronco (trunk) tiene cambios que no queremos desplegar en producción. En esta wiki vamos a abordar cómo realizar estas modificaciones y gestionarlas con Jenkins. Como punto de partida contemplamos que los cambios que tengamos hechos en el **trunk** no nos interesa desplegarlos en producción. ===== Solventar Bug en producción ===== En el caso de encontrar un bug en producción el procedimiento es el siguiente (usar la herramienta de TortoiseSVN para ello): * Descargar el código de la última versión desplegada en producción. Este se encontrará en la carpeta **Versiones** de nuestro proyecto. Haremos un checkout de la última versión en nuestro workspace y tendremos el código exacto que hay en producción. * Modificar el código en nuestro equipo local para solventar los problemas encontrados. * Subir el código con el error corregido dentro de la carpeta **Tags** de nuestro repositorio, siguiendo el formato establecido para los tags Jenkins que es: ddmmyy_revXXX (siendo XXX el número de revisión) añadiendo al final "_fixYYY" donde YYY es el número de versión. Por ejemplo, para arreglar un bug de la versión 1.2.0, el tag que deberíamos subir es "101216_rev001_fix120". * Una vez añadido nuestro código fuente a la carpeta Tags, la tarea de despliegue en producción de Jenkins lo leerá automáticamente junto con el resto. * Por último deberemos realizar un merge de nuestro arreglo con el **trunk** de nuestro proyecto. ===== Desarrollo de nueva funcionalidad en paralelo ===== En el caso de que desarrollemos paquetes de funcionalidad de manera separada deberemos hacerlo en ramas diferentes y posteriormente incorporarlas al **trunk**. El proceso sería el siguiente: * Crear una rama de desarrollo por cada uno de los paquetes de funcionalidad que se vayan a empezar programar a partir del estado actual del trunk. * Trabajar paralelamente en cada rama hasta acabar su funcionalidad. * Una vez quiera probarse una rama en concreto modificaremos la tarea Jenkins (local o desarrollo) para que el código fuente lo coja de nuestra rama en vez de el que hay en el tronco. {{ :fdw2.0:fundeweb2.0:gt:jenkins:jtag.png |}} * Cuando tengamos los cambios validados haremos un merge con el **trunk** y arreglaremos los posibles conflictos. * Si los cambios que hay en el trunk son los que queremos subir lanzaremos la tarea de preproducción. * En caso de que los cambios del trunk no sean los que queremos subir, modificaremos también la tarea de preproducción para que apunte a nuestro tag. * Tras lanzar la tarea anterior, lanzaremos el paso a producción cogiendo el tag generado.