En la actualidad hay muchas opciones para integración continua y despliegue, por lo tanto los equipos de desarrollo deben decidir cuál es más apropiado para sus necesidades.
En este artículo, vamos a analizar a GitLab CI, Azure DevOps y Jenkins tres servicios que nos resultan familiares a los que nos dedicamos a la gestión de builds y releases.
Veremos sus similitudes y diferencias, las cuales pueden ser los factores decisivos para adoptar un producto u otro.
GitLab CI
Es el manifiesto que utiliza gitlab y que podemos modificar para generar automatizaciones para que un flujo de trabajo requiera poca o ninguna interacción humana, siendo capaz de continuamente construir, probar y desplegar cambios en el código.
Puede ser configurado en el archivo gitlab-ci.yml.
Con el CI/CD de GitLab podemos crear tickets, unir solicitudes, escribir código y establecer la integración y entrega continua sin depender de otra aplicación. Es básicamente un viaje sin escalas, GitLab CI/CD corre sus construcciones en Runners.
Los runners son agentes que pueden correr sobre máquinas virtuales o contenedores.
Jenkins
Jenkins es un servidor de automatización de código abierto escrito en Java, diseñado para ayudar a crear, implementar y automatizar la entrega de proyectos, permitiendo distribuir tareas de trabajo en múltiples máquinas y facilitar la prueba o implementación de software en todas las plataformas.
La aplicación incluye el conjunto de complementos Jenkins Pipeline que permite implementar canales de entrega continua, entre las cuales se encuentran: control de versiones, revisión de código, internacionalización y más.
Azure Devops
Azure DevOps es un conjunto de herramientas y servicios para administrar proyectos de desarrollo de software siendo capaz de ser integrado con diferentes plataformas.
Si bien es posible trabajar de forma aislada con Azure DevOps, una de sus principales características, es su capacidad de integrarse con otras plataformas, tales como GitHub, para descargar repositorios de código. Nubes, como, por ejemplo, Microsoft Azure y plataformas de colaboración como Slack.
Azure DevOps incluye servicios como:
Azure Repos, servicio de almacenamiento de código fuente, soportando Git y Team Foundation Version Control
Azure Pipelines, crear definiciones de pipelines, de integración continua y de despliegue continuo (compilación, pruebas y despliegues)
Azure Boards, administración de los esfuerzos de desarrollo de software a través de la definición de listas de características, o backlogs, tableros de Kanban, consultas y reportes
Azure Artifacts, almacenamiento y directorio de artefactos y componentes
Azure Test Plan, capaz de hacer definiciones de pruebas por ejemplo, pruebas de carga o pruebas de aceptación
Azure Devops cuenta con una capa gratuita de sus componentes, azure pipelines y azure artifacts.
Ninguno de los servicios mencionados anteriormente es mejor que otros, sino más bien, cada uno se puede utilizar para diferentes casos de uso o condiciones.
Es por eso que presentamos la siguiente tabla comparativa:
Resumen ¿GitLab CI o Jenkins o Azure DevOps?
Jenkins posee una interfaz muy simple e intuitiva, orientándote en la configuración del proceso que quieras realizar, mientras que su principal desventaja es que el servidor puede convertirse en un exceso de complementos.
GitLab incorpora las últimas tecnologías del mercado como IAC, kubernetes, containers, artefactos. Muchas veces su utilización y configuración puede ser compleja, debido a que deben realizarse a través de un archivo yaml siguiendo una estructura predefinida.
En cuanto a Azure Devops no es una solución única, más bien una serie de servicios los cuales juntos conforman una solución, de los cuales sólo 2 están en la capa gratuita, no obstante su ventaja es que tiene una interfaz y experiencia de usuario más amigable que sus competidores.
¿En qué casos recomendaría utilizar cada uno de estos servicios?
Utilizaremos Jenkins, si no posee personal con capacidades duras, por ejemplo no utiliza kubernetes y posee una amplia variedad de fuentes de controles de versión (gitlab, github, bitbucket, sistemas git propios).
En el caso de GitLab CI si ya utiliza sus sistema git o tiene la capacidad de migrar sus proyectos a gitlab y quiere trabajar con tecnología de IAC, contenedores, kubernetes, artefactos y quieres generar pipelines personalizados con diversas etapas de integración es una excelente idea utilizar gitlab.
Por último, si ya utiliza servicios de Azure Cloud es una buena idea usar Azure Devops dado que permite integraciones nativas.
¿Quieres mejorar tu operación?
Si te gusto este blog y quieres implementarlo en tu compañía no dudes en revisar nuestro servicio de CI/CD & GitOps.