Analicemos estas dos populares herramientas de integración continua y sus diferencias.
El método del ciclo de vida del desarrollo de software ha cambiado drásticamente en la última década.
Antes, el modelo en cascada era la forma de avanzar, luego llegó la metodología ágil en la que el desarrollo se producía de forma iterativa, y ahora con DevOps, tanto el desarrollo como las operaciones se producen de forma iterativa y continua hasta que se desarrolla y despliega la aplicación completa.
El término CI/CD, que significa integración continua y entrega continua, se ha hecho muy popular. Es una práctica DevOps que ayuda a desarrollar y entregar la aplicación mucho más rápido y de forma fiable. Es una metodología que automatiza todos los pasos, desde los requisitos empresariales hasta el despliegue en producción, utilizando una herramienta de CICD. Es mucho mejor y más seguro que hacerlo todo manualmente.
Ahora hay muchas herramientas disponibles para CI/CD, por lo que puede resultar confuso elegir las herramientas adecuadas.
¿Por qué Jenkins?
Jenkins es la herramienta de integración continua de código abierto más popular. Es el estándar de facto para la solución de integración continua.
Puede instalar Jenkins en los principales sistemas operativos como Windows o Linux, ya que se ejecuta en Java. Fue creado originalmente como una herramienta de automatización de construcción para aplicaciones Java. Desde entonces, ha evolucionado mucho y cuenta con más de 1400 plugins para integrarse fácilmente con otras plataformas y herramientas.
Jenkins es la herramienta central para la integración continua y la entrega continua en el proceso de desarrollo de software. Es fácil de instalar y proporciona un panel de control para la gestión de proyectos, al que se puede acceder fácilmente a través de un navegador.
Los desarrolladores utilizan Jenkins para construir, integrar, probar y desplegar su código automáticamente. En primer lugar, los desarrolladores registran su código, después Jenkins recoge el código fuente modificado, activa una compilación y ejecuta una prueba si es necesario. Una vez finalizada la compilación, obtendrá la salida en el tablero de Jenkins, y se puede enviar una notificación al desarrollador si está configurado.
¿Por qué TeamCity?
TeamCity es un servidor CI/CD comercial que también está basado en java. Es una herramienta de automatización y gestión de construcción creada por JetBrains.
El eslogan de TeamCity es«Powerful Continuous Integration out of the box», y esta herramienta lo justifica. Ofrece casi todas las características de Jenkins con algunas adicionales. TeamCity puede integrarse con Docker para crear automáticamente contenedores a través de docker-compose. Tiene soporte de integración con la herramienta Jira para realizar un seguimiento de las incidencias fácilmente.
TeamCity soporta el framework .NET, y puede integrar fácilmente TeamCity con varios IDEs como Eclipse, Visual Studio, etc. Con la integración al repositorio de artefactos de construcción, TeamCity puede almacenar los artefactos en el sistema de archivos del servidor TeamCity o en un almacenamiento externo.
Con la versión gratuita de TeamCity de la licencia de servidor Professional, puede crear 100 builds y 3 agentes de construcción a coste cero.
Jenkins vs. TeamCity
Código abierto vs. comercial
La diferencia más básica es que Jenkins es una herramienta de integración continua de código abierto y TeamCity es una herramienta comercial. El proyecto Jenkins se publica bajo licencia MIT y cuenta con el apoyo de desarrolladores de todo el mundo. TeamCity es desarrollado y mantenido por su empresa matriz JetBrains.
Interfaz
La interfaz de TeamCity es encantadora, y la interfaz ayuda a atraer a muchos principiantes que están empezando con la integración continua y buscando una herramienta de CI. En la interfaz de TeamCity, puede etiquetar, comentar y anclar construcciones para organizarlas mejor.
La interfaz de Jenkins es de la vieja escuela. No es muy atractiva a la vista y tiene un enorme margen de mejora desde el punto de vista de la interfaz de usuario.
Características exclusivas
Aunque Jenkins no tiene un montón de características incorporadas, su enorme ecosistema de plugins proporciona toneladas de características que otras herramientas de CI no pueden ofrecer. Con estas características de plugin, Jenkins sirve para crear builds y analizar el código, lo que ayuda a mejorar la calidad del código.
Por otra parte, aparte de algunas características regulares de la herramienta CI, TeamCity viene con múltiples características out-of-the-box. Es compatible con múltiples plataformas como Java, Ruby, .NET, etc. También puede construir imágenes Docker a través de TeamCity. Con el soporte de Bugzilla y Jira, puede realizar el seguimiento de problemas con facilidad. Y, los cambios de construcción y el historial de fallos se almacenan para mantener la información pasada sobre las estadísticas, ejecutar construcciones pasadas, y los informes del historial de pruebas.
Instalación
Para instalar Jenkins en su sistema, necesita tener Java presente en él. La instalación de Jenkins es sencilla cuando ambos están ya presentes en el sistema. Una vez finalizada la instalación, puede empezar a trabajar con Jenkins en su interfaz web.
La instalación de TeamCity también es muy sencilla. Necesita descargar el Servidor TeamCity e ir a la documentación y seguir las instrucciones mencionadas.
Integraciones
No creo que ninguna herramienta de CI esté siquiera cerca de la competencia de Jenkins cuando hablamos de capacidades de integración. La popularidad de Jenkins está ahí en el mercado porque proporciona integración con cientos de plugins gratuitos.
En comparación con Jenkins, TeamCity puede integrarse con muchos menos plugins. Pero ofrece pocas integraciones exclusivas, lo que se suma a sus «características fuera de la caja». Es compatible con el marco .NET y se integra con Visual Studio Team Services, proporcionando integración en la nube con proveedores como AWS, Azure, GCP, VMware.
Seguridad
La parte buena de que TeamCity sea comercial es que JetBrains lo respalda para que se solucione con prioridad cualquier hallazgo de seguridad. TeamCity proporciona integración con el plugin de seguridad Snyk, que puede realizar un escaneo de vulnerabilidades en la tubería de construcción. Le ayuda a identificar y remediar todos los riesgos y amenazas que hay en sus builds.
Teniendo en cuenta que Jenkins es de código abierto, la mitigación de riesgos podría retrasarse, ya que todo depende de la comunidad de desarrolladores.
Comunidad
La comunidad de Jenkins es más amplia que la de TeamCity. Como Jenkins es de código abierto, cualquier desarrollador puede contribuir a este proyecto. Diariamente, nuevos desarrolladores siguen añadiendo su contribución a este proyecto para añadir nuevas características y convertirlo en una herramienta mejor.
Por otro lado, TeamCity es una herramienta comercial y la mantiene el equipo de JetBrains. Cuenta con una comunidad de soporte profesional para hacer crecer esta herramienta.
Precios
Jenkins es de uso gratuito, ya que es de código abierto, y por eso es una opción preferible para muchas organizaciones. Las organizaciones ahorran una buena cantidad al no gastar nada en una herramienta de CI como Jenkins.
TeamCity no es de uso gratuito. Viene con dos licencias, que son una licencia de servidor profesional y una licencia de servidor empresarial. En una licencia de servidor profesional, puede utilizar 100 configuraciones de compilación y 3 agentes de compilación de forma gratuita, y después de eso, 299 $ para 1 agente de compilación adicional y 10 configuraciones de compilación. La licencia de servidor empresarial de TeamCity comienza con 3 agentes, lo que proporciona configuraciones de compilación ilimitadas a partir de 1.999 $.
Tabla comparativa
Jenkins | TeamCity | |
Escrito en | Java | Java |
Desarrollador | CloudBees, Kohsuke Kawaguchi, Software libre y de código abierto | JetBrains |
Licencia | Licencia MIT | Software comercial propietario |
Características |
|
|
Facilidad de uso | Sí | Sí |
Interfaz de usuario | Interfaz muy básica | Tiene una interfaz atractiva y bonita |
Comunidad | Al ser de código abierto, la comunidad es mayor | Más pequeño en comparación con Jenkins |
Precios | Gratis | La licencia de servidor profesional cuesta 299 $ por agente de compilación después de 3 agentes de compilación gratuitos
mientras que Enterprise Server cuesta a partir de 1999 |
Integraciones | 1400 integraciones | 300 integraciones |
Seguridad | Menos seguro | Más segura |
API | Admite JSON, Python, API RESTful: XML | Admite API RESTful mediante mensajes de servicio y crea complementos mediante API abierta |
Soporte de lenguajes de programación | Java, PHP, C, C , Fortran, Python, y muchos más lenguajes de scripting | Python, C , Java, .NET, Ruby, PHP, Node.js, y muchos más |
Soporte de contenedores | Uso del plugin Docker para Jenkins | Soporte de Docker de primera clase fuera de la caja |
Ciclo de publicación | Más frecuente | Menos frecuente |
Informes | Proporciona informes detallados de las compilaciones y las pruebas | Proporciona informes con una mejor interfaz de usuario web |
Conclusión
Ahora ya conoce las diferencias entre las dos herramientas de integración continua más populares: Jenkins y TeamCity.
A la hora de elegir una herramienta de integración continua para su organización, debe comprobar algunos parámetros como las opciones de alojamiento, las integraciones disponibles, la biblioteca de código reutilizable, la compatibilidad con contenedores y la facilidad de uso y aprendizaje de la herramienta. La herramienta de integración continua que pase estos parámetros sería una excelente opción para ir.
Si todavía tiene dudas, siga adelante y pruebe con Jenkins y TeamCity en su versión gratuita. Después de crear unas cuantas compilaciones en estas plataformas, estaría en una situación más cómoda para decidir qué herramienta es mejor para la integración continua de sus proyectos.