¿CruiseControl [.Net] vs TeamCity para una integración continua?

117

Me gustaría preguntarle qué entorno de compilación automatizado considera mejor, según la experiencia práctica. Estoy planeando hacer algo de desarrollo .Net y Java, así que me gustaría tener una herramienta que admita ambas plataformas.

He estado leyendo y descubrí CruiseControl.NET , utilizado en el desarrollo de stackoverflow, y TeamCity con su soporte para agentes de compilación en diferentes plataformas de SO y basados ​​en diferentes lenguajes de programación. Entonces, si tiene experiencia práctica en ambos, ¿cuál prefiere y por qué?

Actualmente, estoy principalmente interesado en la facilidad de uso y administración de la herramienta, mucho menos en el hecho de que CC es de código abierto, y TC está sujeto a licencias en algún momento cuando tienes muchos proyectos para ejecutar (porque, yo lo necesita para una pequeña cantidad de proyectos).

Además, si hay alguna otra herramienta que cumple con lo mencionado anteriormente y cree que vale la pena una recomendación, no dude en incluirla en la discusión.

zappan
fuente

Respuestas:

111

He trabajado en y con herramientas de Integración Continua desde la que generó Cruise Control (versión java). Los he probado casi todos en algún momento. Nunca he sido más feliz que con TeamCity. Es muy simple de configurar y aún proporciona una gran cantidad de energía. La página de estadísticas de compilación que muestra los tiempos de compilación, el recuento de pruebas unitarias, la tasa de aprobación, etc. es muy agradable. La página de inicio del proyecto de TeamCity también es muy valiosa. Para proyectos .NET simples, puede decirle a TeamCity dónde está la solución y qué ensamblajes tienen pruebas y eso es todo lo que necesita (aparte de la ubicación del control de código fuente). También hemos utilizado algunos scripts complicados de MSBuild con él y hemos terminado el encadenamiento de compilación. También pasé por dos actualizaciones de TeamCity y fueron indoloras.

CruiseControl.NET también funciona bien. Es más complicado de configurar, pero tiene un historial más largo, por lo que es fácil encontrar soluciones en la web. Dado que CruiseControl.NET es de código abierto, también tiene la opción de agregar o cambiar lo que quiera. Había usado CruiseControl.NET desde su lanzamiento y escribí algunos de los primeros códigos para cc.tray (afortunadamente reescrito por alguien que sabía más).

Cruise, de ThoughtWorks, también se ve bastante bien, pero no veo una razón convincente para que cambie. Si estuviera comenzando un nuevo proyecto, podría intentarlo, pero TeamCity ha hecho un gran trabajo al simplificar las cosas simples mientras que las complejas son bastante sencillas.

Editar: Acabamos de actualizar a TeamCity 5.0 hace unas semanas y fue otra actualización indolora. Nos permitió aprovechar las capacidades mejoradas de cobertura de código y el soporte GIT. Ahora también estamos utilizando la compilación personal y las funciones de confirmación probadas previamente que han estado disponibles durante un tiempo. Pensé que debería actualizar la respuesta para indicar que TeamCity sigue mejorando y sigue siendo fácil de usar.

Mike dos
fuente
Me pregunto si con toda su experiencia podría tener un poco para compartir un screencast de la creación de un proyecto .NET simple y trabajar con TeamCity (usando JING (screencasting gratuito) u otra herramienta) y publicar el enlace aquí o en algún lugar para que yo y todos los que luchemos con él tendremos un buen inicio :) Gracias.
balexandre
2
@balexandre - He encontrado que los documentos de la ciudad del equipo son bastante buenos. Y la respuesta de @boj proporcionó un enlace a una buena pantalla emitida aquí blog.wekeroad.com/kona/kona-2
Mike Two
Siempre tuve miedo de CI por la imagen de CCNet que tenía, la semana pasada probé TeamCity 6.5 y ha sido una alegría absoluta. no tocó un solo archivo xml / de configuración.
kay.one
1
Si actualmente usa CC.Net y le gustaría mudarse a Team City, ¿es doloroso? ¿Cómo produce TC archivos MSI?
Wes
@Wes, no sé si esto todavía es relevante para usted, pero tenemos más de 20 proyectos ejecutándose en CC.Net, pero recientemente implementé TeamCity para algunos proyectos de Android que tenemos. El mayor dolor fue aprender Ant, pero eso es algo que tendría que haber hecho si hubiera puesto los proyectos en CC.Net. Con mucho gusto movería todos nuestros proyectos a TeamCity si pudiera convencer a la gerencia de que pague por las configuraciones de compilación adicionales que necesitaríamos (es gratis hasta cierto punto), principalmente debido a la configuración, que es muy sencilla en TeamCity y un atolladero XML en CC. Red.
johnc
33

Yo era / soy un gran fan de CC.NET. Actualmente tenemos 5 proyectos en CruiseControl y funciona muy bien. Escribir archivos de configuración con la mano puede ser doloroso, pero está bien.

Pero .

Después del screencast de Kona: Integración continua y mejores pruebas unitarias (el primer 1/3 sobre TeamCity) también comprobaré TeamCity. Me encanta el panel de prueba de unidad integrado y la interfaz de configuración.

Creo que todos deberían ver este video antes de elegir CC.NET o TeamCity.

PD: Espero que también haya un valioso video CC.NET en la red.

boj
fuente
15

Mi servidor de CI favorito es, con mucho, Hudson. Fácil de configurar y mantener, muchos gráficos agradables para mostrar tendencias a desarrolladores y no desarrolladores, y gratis.

Actualmente estoy usando TeamCity en un proyecto y en general estoy satisfecho con él, pero muchos de los gráficos que genera no son especialmente útiles y es más complicado de configurar que Hudson.

Dicho esto, TeamCity es poderoso, gratuito para muchos usos y tiene una característica increíble: Remote Run. Puede "confirmar previamente" su verificación directamente desde IDEA o Eclipse, ejecutar una o más configuraciones de compilación en el servidor TeamCity y solo confirmar los cambios si la compilación es exitosa (por ejemplo, compila y todas las pruebas pasan).

Dado que podría tener TeamCity y Hudson en funcionamiento en unas pocas horas, podría valer la pena tomarlos y ejecutarlos uno al lado del otro, junto con cualquier otro (como CruiseControl) que se le ocurra. Si no puede soportar un servidor de CI rápidamente para hacer una comparación lado a lado, entonces al menos tiene un punto de datos para facilitar la instalación y / o configuración.

Gene Gotimer
fuente
6
+1 para Hudson. Consulte también: uso de Hudson como herramienta de compilación .NET: stackoverflow.com/questions/616149/… ; CruiseControl vs Hudson: stackoverflow.com/questions/604385/…
Jonik
12

Los he usado con éxito en diferentes proyectos. Desde un punto de vista administrativo y de configuración, Team City es mucho más fácil de tratar. No tienes que hackear con archivos .config como lo haces con CC y la configuración es muy sencilla. Como no tienes muchos proyectos, recomendaría Team City en lugar de CC hasta que llegues al punto en que Team City cuesta $$.

Desarrollador SaaS
fuente
12

He utilizado tanto CC.net como TeamCity. Tengo la tarea de configurar e instalar TeamCity para mi organización (5 desarrolladores). Nuestra organización utiliza algunas prácticas y herramientas poco comunes (al menos, para organizaciones de nuestro tamaño), como Perforce para el control de código fuente y múltiples agentes de compilación que se ejecutan en sistemas operativos heterogéneos, lo que causó algunos problemas de configuración inicial. Sin embargo, el soporte por correo electrónico fue absolutamente de primera categoría para configurar todo. Recibí respuestas a mis preguntas tontas en literalmente minutos.

La interfaz es intuitiva y receptiva, además de estar repleta de funciones. El producto parece muy caro. La configuración es fácil y la interfaz web es lo suficientemente inteligente como para actualizarse sin necesidad de reiniciar los servicios del agente o servidor, o incluso actualizar la página.

Siento que estamos usando casi todas las funciones avanzadas del producto y no hemos encontrado ningún error hasta ahora. Integración de Ndepend, scripts NAnt anidados, etiquetado de versiones Perforce, lo que sea, lo estamos haciendo.

Recomiendo ampliamente TeamCity a cualquiera que busque un servidor de integración continua, o cualquier servidor de compilación, de verdad.

user28669
fuente
¿Perforce es una herramienta poco común? Perforce es fantástico para equipos de cualquier tamaño. Yo mismo lo uso para el desarrollo de mi hogar :)
sonstabo
@sonstabo, estoy de acuerdo con eso, la mayoría de las pequeñas empresas optan por SVN o GIT y Perforce se utiliza principalmente en empresas más grandes. He usado Perforce y me gustó, pero estaba en una empresa de 1,000 desarrolladores cuando lo usé.
Samuel Neff
3

Sin querer lanzarte herramientas alternativas :-)

Hudson es una gran alternativa de código abierto, he usado CC y CC.net, y confieso que creo que son herramientas fantásticas. Estoy pensando en cambiarme a hudson, ya que parece mucho más fácil de configurar y mantener.

https://hudson.dev.java.net/

Scott James
fuente
1
+1 Como nadie parece pensar en Hudson para .Net CI. He usado Cruise Control, Team City y Bamboo, y descubrí que Hudson es la mejor herramienta para el trabajo en la mayoría de los casos en los que el presupuesto es una gran preocupación.
Dan Rigby
3

Asegúrese de que el sistema que decida se adapte a la cantidad de proyectos que necesitará manejar ...

Utilizo CruiseControl.Net pero no lo recomendaría para construir muchos proyectos ... Tengo una disposición (posiblemente un poco extraña) en la que tengo muchas bibliotecas estáticas de C ++ que compongo en aplicaciones. Cada biblioteca depende de otras bibliotecas y las aplicaciones incorporan un conjunto de bibliotecas y compilan. Cada lib tiene un conjunto de pruebas. Cada aplicación tiene un conjunto de pruebas. Construyo para 5 compiladores y variaciones de plataformas (Windows).

Lo primero que encontré fue que los activadores del proyecto de CC.Net no son realmente lo que necesita y el activador múltiple no funciona bien con los activadores del proyecto. La forma en que funcionan los activadores del proyecto (utilizan la comunicación remota para conectarse al servidor donde está almacenado el proyecto (incluso si es un proyecto que es administrado por la misma instancia de CC.Net) y luego extraen todos los proyectos de ese servidor y buscan en la lista secuencialmente buscando el proyecto que le interesa ...) significa que no escalan bien. Una vez que supere una cierta cantidad de proyectos, encontrará que CC.Net está tomando la mayor parte de la CPU para su máquina de compilación.

Por supuesto, es de código abierto, por lo que puede solucionarlo ... Y estoy seguro de que está bien para una pequeña cantidad de proyectos no interdependientes.

Para obtener más detalles sobre los problemas que tuve y algunos parches para CC.Net, consulte aquí. http://www.lenholgate.com/archives/cat_ccnet.html

Len Holgate
fuente
oh ... gracias por esta información, valiosa publicación. especialmente cuando se dice que TC es una configuración simple y su limitación es el número de proyectos, donde CC & CC.Net podrían entrar en juego. pero como dices, se mete en problemas cuando aumenta el número de proyectos ... gracias de nuevo
zappan
Incluso en mi versión fuertemente pirateada de CC.Net tengo problemas porque CC.Net utiliza un enfoque de subproceso por proyecto para la programación y, bueno, eso es solo un diseño de mierda en mi humilde opinión.
Len Holgate
2

Recientemente configuré cc .net. Es una gran aplicación pero requiere un poco de paciencia. Estarás editando muchos archivos de configuración en el bloc de notas :)

Ha existido por un tiempo, por lo que está bien respaldado y normalmente puedes encontrar a alguien que haya hecho lo que quieres hacer antes. La interfaz web también es .net, lo que fue una ventaja para nosotros, ya que somos una tienda de Microsoft.

No he utilizado TeamCity, pero he escuchado bastantes recomendaciones y se ve bonito.

alexmac
fuente
2

Tuve una experiencia configurando y ejecutando CruiseControl (versión Java) en Linux durante mi empresa anterior. Como sugiere la mayoría de la gente, no es la cosa más trivial de configurar. Debe comprender su marco para poder crear la configuración viable / manejable. Sin embargo, una vez superado ese obstáculo, creo que CruiseControl es lo suficientemente flexible como para permitirle hacer diferentes tipos de cosas para adaptarse a diferentes escenarios.

Además, la documentación de CruiseControl, su página wiki también tiene información útil.

No tengo una experiencia directa con TeamCity. Aunque su función de confirmación previa a la prueba parece lo suficientemente interesante.

La otra herramienta CC a la que podrías darle un vistazo es Bamboo de Atlassian. Es mucho más fácil de configurar y la interfaz es más agradable. Sin embargo, no es tan flexible como lo que ofrece CruiseControl.

ejel
fuente
1

Una tercera opción que quizás quieras considerar: el crucero de Thoughtworks. Está construido sobre CruiseControl, pero ofrece muchas más funciones, configuración más sencilla, etc. No es gratis (ni de código abierto).

http://studios.ilsttworks.com/cruise-continuous-integration

El Pitufo
fuente
1
He examinado Cruise varias veces cuando se trata de configurarlo como un sistema CI. no es mucho más simple que, por ejemplo, CC.NET. Tiene sus fortalezas en los flujos de construcción e implementación, pero como herramienta de CI, creo que TeamCity es mucho más competente
haqwin
Si va a pagar por Cruise / Go, también puede obtener TeamCity gratis.
Niall Connaughton
0

He estado usando Teamcity durante el último año y medio y tengo una gran experiencia. He integrado varios proyectos .Net y Java y he utilizado herramientas como MSBuild, Maven, etc. Encontré Teamcity bastante simple de configurar y trabajar. También logré que CI se ejecutara para algunos proyectos SQL, lo cual fue un poco de pesadilla que podría haber sido peor con otras herramientas de CI.
Recientemente actualizado a Teamcity 8.0.6, que fue indoloro. Además, Teamcity proporciona una API REST que es muy útil para algunos escenarios. Si está utilizando PowerShell para automatizar compilaciones, hay disponibles varios scripts de integración de Psake / Teamcity en GitHub.

Mohammad Nadeem
fuente