TeamCity, la solución de integración continua utilizada por JetBrains
Hace algún tiempo estuve trabajando con un IDE desarrollado por JetBrains el cual me pareció muy interesante. El programa en cuestión era PHPStorm y he de decir que la documentación y las funcionalidades eran muy buenas. Un gran IDE para desarrolladores e ingenieros QA que trabajen en PHP.
Asi que en este articulo me gustaría comprobar si la solución desarrollada por JetBrains para la integración continua es también igual de buena, para ello voy a comparar su herramienta TeamCity con la herramienta comercial Atlassian Bamboo y la gratuita Jenkins.
Mi idea es hacer una pequeña valoración de TeamCity y para ello voy a preparar un pequeño JOB usando un proyecto de ejemplo en MAVEN.
. La página de Usuario:
TeamCity esta integrado como un contenedor Tomcat servlet, una vez desplegado, la primera pantalla que aparece es la de Profile. Como se puede ver en la imagen de abajo, la aplicación es bastante simple e intuitiva. En mi opinión la interfaz es algo entre Jenkins donde los menus son difíciles de entender y es necesario dedicar algo de tiempo para manejarlos bien y Bamboo, donde la intefaz es muy clara y con bastantes funcionalidades.
. Crear un Proyecto:
Crear un proyecto es algo relativamente fácil con TeamCity, me gustaría remarcar un par de cosas de la pantalla de creación de proyecto:
- En la parte de arriba tenemos el menu principal donde uno de los apartados son los Agentes que estan involucrados en la ejecución de los JOBS. También podemos encontrar un menu sobre la cola, los cambios hechos y la lista de proyectos. Crear un Agente nuevo es realmente fácil, simplemente hay que ejecutar un archivo BAT o SH dependiendo del sistema operativo con el que trabajemos. Mucho mas fácil que crear un agente en Bamboo.
- Para poder enviar mensajes a los interesados, TeamCity utiliza el protocolo de comunicación XMPP, un protocolo muy utilizado y testado.
. Configurar un proyecto:
La configuración de un proyecto esta dividida en una serie de pasos recogidos en el menu derecho de la ventana. De lo mas destacable es la facilidad para integrar con cualquier control de versiones, hacer un seguimiento de tareas, añadir parametros externos, configurar el horario de ejecución, meta-runners, y temas de seguridad ssh. También disponemos de un menu específico para Maven el cúal veremos en el siguiente apartado.
. Configurar un proyecto en MAVEN:
Una vez hemos creado un proyecto en MAVEN, tenemos una serie de campos para poder configurarlo. Este apartado no difiere mucho de la forma en la que lo hace Jenkins. Cabe destacar la integración de JaCoCO y IntelliJ IDEA para desarrollar informes durante la ejecución.
. La Consola:
La consola es muy parecida a los Logs de MAVEN, nos muestra errores, warnings y fechas de la ejecución de los pasos. La consola en Bamboo es mas descriptiva.
En mi opinión creo que es una muy buena herramienta comercial, mas atractiva que la herramienta gratuita Jenkins, pero que no esta al mismo nivel que la herramienta Bamboo de Atlasian, mucho mas atractiva y eficaz. También hay que tener en cuenta que es mas cara que Bamboo.