Como empresa tecnológica tenemos que estar actualizados en cuanto a nuevos lenguajes de programación, nuevas librerías, nuevos estándares… en definitiva, muchas cosas que es realmente difícil de asimilar sin un proceso de aprendizaje continuo. A veces esta continua revisión deja de lado el testing, la automatización de pruebas, despliegues semi-automáticos… una parte muy importante del día a día. Por ello en Hiberus intentamos dedicar tiempo también en este aspecto usando Jenkins.
¿Qué es Jenkins?
Jenkins es un aplicativo para la automatización del proceso completo de desarrollo de software, con tareas comunes como la integración continua pero sobretodo potenciando los equipos para implementar la parte técnica de la entregas continuas.
Para una persona que no está en contacto con el mundo tecnológico puede parecer un juego de palabras, pero básicamente esto viene a decir que disponemos de un software que nos permite automatizar los procesos de despliegue, la actualización de entornos, revisión de calidad de código y testing. Esto finalmente se traduce en entregas periódicas a cliente, en tiempo y forma con resultados que garantizan un producto funcional y listo para su explotación.
Jenkins debe su potencial a su ampli y versátil sistema de plugins que nos permiten realizar diferentes conjuntos de acciones, que permiten modularizar y extender la funcionalidad.
¿Qué son los plugins?
Jenkins está respaldado una gran comunidad, dónde cualquier desarrollador puede programar su propio plugin y ofrecer de nueva funcionalidad a nuestra aplicación de Jenkins. Algunos plugins realmente interesantes que usamos en nuestro día a día son FTP, SSH, GIT Conector, Task… existen cientos de plugins.
Publicación de contenidos mediante FTP
Este plugin nos permite publicar contenido en una máquina dónde dispongamos de acceso mediante FTP. Este plugin es muy usado en máquinas dónde no se dispone de un usuario SSH con el que acceder a la máquina.
Publicación de contenidos mediante SSH
Uno de mis preferidos por la potencia que nos brinda. Este plugin permite conectarnos a una máquina remota mediante SSH y realizar operaciones básicas como limpiar la cache de una aplicación, cambiar permisos a unas carpetas o ejecutar scripts en el servidor de destino.
Control de calidad
Mas que a través de un plugin en concreto, el control de calidad y pruebas emplea toda una suite la cual nos permite realizar la ejecución de pruebas funcionales y unitarias y que valida cada entrega o cambio realizado a una aplicación .
Como complemento contamos con plugins de control de calidad de código, que nos dan brindan una serie de reportes basado en estándares de métricas que nos permiten aseverar que desarrollamos aplicaciones robustas y seguras .
Gestión de usuarios
Otro aspecto muy importante a tener en cuenta a la hora de usar Jenkins es configuración o ejecución de tareas por usuario, lo que nos permite segmentar el acceso a los proyectos y entornos a los miembros autorizados.
Satisfacción del cliente
Los errores humanos, por muy profesionales que sean los equipos, están a la orden del día. Jenkins nos permite que casi cualquier persona del equipo sea capaz de realizar un despliegue, interpretar los resultados obtenidos y generar un producto listo para entregar al cliente.
Pondremos un ejemplo de un entorno algo complejo: se ha desarrollado una nueva funcionalidad que se encuentra lista para pasar a producción. Bajo este escenario una vez concluidas todas las pruebas se notifica a nuestro equipo de sistemas, los cuales recibirán un paquete de actualización con los cambios a propagar a producción, y un listado de tareas a ejecutar: actualización de bases de datos, limpiar memoria del sistema, limpiar caches de aplicación y servidor, actualizar nodos dónde se tiene la aplicación replicada para mejorar la tasa de respuestas, etc. Como véis no son tareas triviales, y saltarnos cualquiera de estos pasos puede terminar en una aplicación caída en un entorno de producción que pudiera ser un comercio electrónico grande o una página de turismo con millones de visitas mensuales.
Con Jenkins todas estas tareas se planifican y configuran desde el minuto 0 incluyendo contramedidas si cualquiera de ellas falla, reduciendo al mínimo la ocurrencia de errores, los problemas de despliegue y el downtime entre actualizaciones.
Control de lo que desplegamos
A veces es difícil mantener informado al cliente de todo lo que va a recibir en un sprint o entrega. Con Jenkins y su integración con Git (el sistema de control de versiones que empleamos), este reporte es ta sencillo como darle al botón de Ejecutar tarea y obtendremos los cambios realizados con respecto al despliegue anterior. Hay que recalcar que en este aspecto es importantísimo que nuestro desarrolladores realicen trabajos atómicos, que no mezclen funcionalidades en cada trabajo que realizan y que se sigan algunas recomendaciones sobre escritura de mensajes. Estos mensajes finalmente pueden ser extraidos por el encargado de despliegues o el jefe de proyecto y se emplean para la elaboración de un documento más formal para entregar a los clientes con las tareas realizadas desde la última versión del aplicativo.
En Hiberus intentamos ofrecer tecnología a la última, sin perder de vista la calidad de nuestros aplicativos entregados, su estabilidad, su mantenimiento y su fiabilidad en el proceso de despliegues. Si te ha gustado el artículo no dudes en compartir plugins interesantes, contarnos tu proceso de despliegues u otras cuestiones similares.
¿Quieres más información sobre nuestros servicios de QA?
Contacta con nuestro equipo de expertos en QA y Testing
Jenkins is a powerful tool that truly revolutionizes the way we handle automation in our development processes. Its flexibility in managing tasks, deployments, and testing makes it indispensable for modern software engineering. The intuitive interface and extensive plugin ecosystem empower teams to streamline workflows effectively. Moreover, integrating Jenkins with other tools can significantly enhance productivity and collaboration. I appreciate how it supports continuous integration and continuous delivery, ensuring faster and more reliable releases. The community support and wealth of resources available also make it easier for newcomers to get started. Overall, embracing Jenkins can lead to a more efficient and robust development lifecycle.
Great blog on Jenkins! You have taken it down very well as far as how Jenkins can streamline automation for tasks, deployments, and testing. It’s step by step, so even simpletons can understand the process; but if you have been using it for a while, these advanced tips do come in handy. I actually like your touch on continuous integration and delivery, which in general, of course, comes as one of the critical elements of modern development practices. It is an interesting example explaining the practical outcome of the Jenkins tool and makes it easier to understand what its benefits are. With such resources, the teams surely will streamline their workflows, eventually enhancing productivity. Looking forward to such posts.
Great overview of Jenkins! It’s impressive how automation can enhance not just deployment but also the overall software quality. I appreciate the detailed explanation of plugins—especially the FTP and SSH plugins. They seem incredibly useful for streamlining the deployment process. Thanks for sharing!