Los programadores sin duda son el equipo fundamental para toda empresa. Durante su labor están constantemente creando, modificando, mejorando, entre otras, aplicaciones. Debido a esto el código esta sube y baja de los repositorios a cada momento. Jenkins es una herramienta muy útil para este tipo de tareas. En esta ocasión vamos a tener la oportunidad de ver un poco sobre Jenkins y su funcionalidad para las empresas dedicadas al desarrollo.
Antes de adentrarnos con Jenkins, tenemos que tener conocimiento de lo que es integración continua, así que, primero veamos como funciona esta teoría.
Integración continua
La integración continua es una metodología de trabajo donde cualquier miembro del equipo de trabajo integra su desarrollo de manera frecuente o por lo menos una vez al día, pero normalmente suelen ser varias integraciones al día.
Estas integraciones se verifican compilando el código que se ha subido y que al finalizar obtiene una especie de ejecutable, este ejecutable es denominado “build” y el mismo debe hacerse de manera automática.
Una de las características de la integración continua es hacer las pruebas necesarias de la funcionalidad del código de acuerdo a las reglas de calidad, con el fin de detectar los errores lo mas pronto posible.
En este caso se recomienda hacer build con frecuencia comprobando que funcionan de forma correcta, de esta manera tenemos un producto final mas confiable y sin fallos al momento de llegar a producción.
Lo bueno de utilizar herramientas como Jenkins, es que podemos saber el estado del código fuente en cualquier momento, si tiene errores o no. Pudiendo monitorizar la calidad del código y el estado de las pruebas realizadas. Esta metodología de trabajo ayuda a reducir los costos a pagar por hacer mal las reglas de negocios o decisiones que te hagan programar mal, lo que significa que reducirá los errores y aumentara la productividad en el código.
Y como hacemos todo esto realidad? Aquí, es donde entra Jenkins.
¿Que es Jenkins?
Jenkins no es mas que un servidor diseñado para la integración continua, es gratuito y es de código abierto (open source), también se ha convertido en el software mas utilizado para esta tarea.
Jenkins nació de otra herramienta llamada Hudson. Hudson fue desarrollada en Sun Microsystem por Kohsuke Kawaguchi. Al tiempo de que Oracle comprara Sun, la comunidad de Hudson decidió desarrollar otro proyecto con el nombre de Jenkins pero con la diferencia de que este seria open source.
[wp-svg-icons icon=»signup» wrap=»span»] Funciones de Jenkins
Anteriormente mencionamos algunos niveles en la que maneja la integración continua. Jenkins es el que se encarga de ejecutar estas tareas cuando configuramos un build. Si ponemos un ejemplo, podríamos configurar una tarea en donde se compruebe el repositorio de un SVN de desarrollo cada cierto tiempo y que para cuando haya cambios en ellos, Jenkins compile el código que se subió y haga las pruebas correspondientes.
Si al momento de realizar las pruebas se consiguen errores, Jenkins se encargara de notificar el resultado al personal encargado, bien sea QA, el propio programador, al encargado del proyecto, etc, por medio de correo electrónico o cualquier otro método que hayan configurado, para que lo modifiquen y vuelvan a subirlo.
Por otro lado, si el resultado es el esperado, Jenkins puede ser configurado para que integre el código en el repositorio correspondiente, pasar al siguiente nivel de pruebas o bien subir el código a producción. Estas rutinas pueden ser configuradas para integrarse periódicamente, y a través de su panel se puede seguir todo el proceso.
Algunas de las características que encontraremos en Jenkins son:
- Configurar la herramienta para que ejecute las políticas o reglas de negocios de calidad y ver sus resultados.
- Visualizar el resultado de todas la pruebas.
- Visualizar o generar la documentación del proyecto.
- Pasar versiones del código de QA a un ambiente de pre-producción para sus ultimas pruebas o bien a producción directamente.
[wp-svg-icons icon=»warning» wrap=»span»] Que tenemos que tener en cuenta para usar Jenkins
Es importante tener un repositorio de control de versiones, pueden ser git, svn, mercurial, entre otras. Ahí se encontrara todo lo necesario para poder realizar un build. Este es el punto mas fuerte de Jenkins, ya que actúa a través de cualquier cambio de los repositorios.
También es importante que el equipo de desarrollo suba el código constantemente a los repositorios, con el fin de que Jenkins al notar el cambio, empiece con las pruebas correspondiente e indique si hay o no algún error en el buid y este sea corregido lo antes posible.
Conclusión
Es muy importante que los programadores utilicen controles de versiones en sus proyectos y mas aun cuando los proyectos son grandes y cuando se trabaja con un gran equipo y este equipo se encargan de diferentes módulos para al final integrarlos en una fuente, y en esto nos ayuda los svn, en que no reescribamos el código del otro. Pero tal vez la parte mas difícil no sea el programar, sino, hacer las pruebas necesarias para que el pase a producción sea lo mas transparente posible.
Aquí es donde herramientas como Jenkins juegan un papel importante para el desarrollo y éxito de un proyecto.