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 de cascada era la forma de avanzar, luego ágil metodología en la que el desarrollo se producía de forma iterativa, y ahora con DevOpsTanto el desarrollo como las operaciones tienen lugar de forma iterativa y continua hasta que se desarrolla e implanta 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. Se trata de una metodología que automatiza todos los pasos, desde los requisitos empresariales hasta el despliegue en producción mediante 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 ser 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 instale y ofrece un cuadro de mandos para la gestión de proyectos, al que se puede acceder fácilmente a través de un navegador.
Los desarrolladores utilizan Jenkins para compilar, integrar, probar y desplegar su código automáticamente. En primer lugar, los desarrolladores registran su código y, a continuación, 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á el resultado en el panel 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 la compilación creada por JetBrains.
El lema de TeamCity es "Potente integración continua lista para usar", y esta herramienta lo justifica. Ofrece casi todas las características de Jenkins con algunas adicionales. TeamCity puede integrarse con Docker para la creación automática de contenedores a través de docker-compose. Dispone de soporte de integración con la herramienta Jira para realizar el seguimiento de incidencias fácilmente.

TeamCity es compatible con el marco .NET, y puede integrar fácilmente TeamCity con varias IDEs como Eclipse, Visual Studio, etc. Con la integración para construir repositorio de artefactos, TeamCity puede almacenar los artefactos en el sistema de archivos del servidor TeamCity o almacenamiento externo.
Con la versión gratuita de TeamCity de la licencia de servidor Professional, puede crear 100 compilaciones y 3 agentes de compilación a coste cero.
Jenkins frente a TeamCity
Código abierto frente a 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 un montón de principiantes que están empezando con la integración continua y en busca de una herramienta de CI. En la interfaz de TeamCity, puedes etiquetar, comentar y fijar construcciones para organizarlas mejor.
La interfaz de Jenkins es de la vieja escuela. No es muy atractivo a la vista y tiene un enorme margen de mejora desde una perspectiva de interfaz de usuario.
Funciones 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 funciones de plugin, Jenkins se utiliza para crear compilaciones 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. Soporta múltiples plataformas como Java, Ruby, .NET, etc. También puede construir imágenes Docker a través de TeamCity. Con Bugzilla y Jira puede realizar el seguimiento de incidencias con facilidad. Además, los cambios de compilación y el historial de fallos se almacenan para mantener la información anterior sobre las estadísticas, ejecutar compilaciones anteriores e 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 presentes en el sistema. Una vez finalizada la instalación, puede empezar a trabajar con Jenkins en su interfaz web.
Instalar TeamCity también es muy fácil. Es necesario descargar TeamCity Server 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.
Comparado con Jenkins, TeamCity puede integrarse con muchos menos plugins. Pero ofrece algunas integraciones exclusivas, que se suman a sus "características listas para usar". Es compatible con el marco .NET y se integra con Visual Studio Team Services, proporcionando integración en la nube con proveedores de nube 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 Plugin de seguridad Snykque puede realizar un escaneo de vulnerabilidades en el proceso de compilación. Le ayuda a identificar y remediar todos los riesgos y amenazas que existen en sus compilaciones.
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. Cada día, 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 mantenida por el equipo de JetBrains. Cuenta con una comunidad de soporte profesional para hacer crecer esta herramienta.
Precios
Jenkins es libre de usar, ya que es de código abierto, y es por eso que 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 gratuito. Viene con dos licenciasque son una licencia de servidor Professional y una licencia de servidor Enterprise. 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$.
Cuadro comparativo
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 que Jenkins |
Precios | Gratis | La licencia Professional Server cuesta 299$ por agente de compilación después de 3 agentes de compilación gratuitos
mientras que Las licencias de Enterprise Server cuestan a partir de 1999$ |
Integraciones | Más de 1400 integraciones | Más de 300 integraciones |
Seguridad | Menos asegurado | Más seguridad |
API | Soporta JSON, Python, RESTful API: XML | Admite API RESTful mediante mensajes de servicio y crea plugins utilizando Open API |
Lenguaje de programación | Java, PHP, C, C++, Fortran, Python y muchos otros lenguajes de programación. | Python, C++, Java, .NET, Ruby, PHP, Node.js, etc. |
Soporte de contenedores | Uso del plugin Docker para Jenkins | Compatibilidad inmediata con Docker de primera clase |
Ciclo de liberación | Más frecuentes | Menos frecuentes |
Informes | Proporciona informes detallados sobre las compilaciones y las pruebas | Informes con mejor interfaz web |
Conclusión
Ahora ya conoces las diferencias entre las dos herramientas de integración continua más populares: Jenkins y TeamCity.
A la hora de elegir un Herramienta CI 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 aún tienes dudas, dale una probar con Jenkins y TeamCity versión gratuita. Después de crear unas cuantas compilaciones en estas plataformas, estarás en una situación más cómoda para decidir qué herramienta es mejor para la integración continua de tus proyectos.