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.
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.