115

Me gustaría preguntarte qué entorno de construcción automatizado consideras mejor, basado en la experiencia práctica. Estoy planeando hacer algo de .Net y algo de desarrollo de Java, así que me gustaría tener una herramienta que admita ambas plataformas.CruiseControl [.Net] vs TeamCity para la integración continua?

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

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

Además, si hay alguna otra herramienta que cumple con lo mencionado anteriormente y usted cree que merece una recomendación, siéntase libre de incluirla en la discusión.

Respuesta

111

He trabajado en y con herramientas de integración continua desde la que generó Cruise Control (versión java). Intenté casi todos ellos 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 potencia. 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 buena. 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é conjuntos tienen pruebas y eso es todo lo que necesita (aparte de la ubicación de control de origen). También hemos usado algunos scripts complicados de MSBuild con él y hemos hecho un encadenamiento de construcción. También he pasado por dos actualizaciones de TeamCity y fueron indoloras.

CruiseControl.NET también funciona bien. Es más complicado de configurar, pero tiene una historia más larga, por lo que es fácil encontrar soluciones en la web. Como CruiseControl.NET es de código abierto, también tiene la opción de agregar o cambiar lo que desee. Había usado CruiseControl.NET desde su lanzamiento y escribí algunos de los códigos iniciales de 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 simplificando las cosas simples al tiempo que ha simplificado bastante el complejo.

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

+0

pregunto si con toda su experiencia podría tener un poco para compartir un screencast de crear un proyecto .NET simple en él y trabajar con TeamCity (usando JING (screencasting gratis) u otra herramienta) y publicar el enlace aquí o en alguna parte para que yo y todos nosotros que luchamos con él tendremos un buen arranque :) Gracias. – balexandre

+2

@balexandre - He encontrado que los documentos de la ciudad del equipo son bastante buenos. Y las respuestas de @boj proporcionaron un enlace a un buen elenco de la pantalla aquí http://blog.wekeroad.com/kona/kona-2/ –

+0

Siempre tuve miedo de CI debido a 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/configuración. –

2

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

Ha existido desde hace mucho tiempo por lo que es bien soportado 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 parece bonito.

1

Una tercera opción que quizás desee considerar: Crucero de Thoughtworks. Se basa en CruiseControl, pero ofrece muchas más características, una configuración más sencilla, etc., etc. No gratuita (o de código abierto).

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

+1

He investigado algunas veces Cruise cuando se trata de configurar un sistema de CI. no es mucho más simple que, por ejemplo, CC.NET. Tiene sus fortalezas para construir y desplegar flujos, pero como herramienta de CI, TeamCity es mucho más competente. – haqwin

+0

Si va a pagar Cruise/Go, también puede obtener TeamCity gratis. –

3

Sin querer tirar herramientas alternativas a ti :-)

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

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

+1

+1 Como nadie parece pensar en Hudson para .Net CI. He usado Cruise Control, Team City y Bamboo, y he descubierto que Hudson es la mejor herramienta para el trabajo en la mayoría de los casos donde el presupuesto es una gran preocupación. –

12

me gustan los dos he utilizado 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 tiene que hackear archivos .config como lo hace con CC y la configuración es muy sencilla. Como no tienes muchos proyectos, recomendaría Team City sobre CC hasta que llegues al punto de que Team City cuesta $$.

2

Tuve una experiencia configurando y ejecutando CruiseControl (versión de Java) en Linux durante mi empresa anterior. Como la mayoría de la gente sugiere, no es la cosa más trivial de configurar. Necesita comprender su marco de trabajo para llegar a la configuración manejable/manejable. Sin embargo, una vez que pasó esa joroba, 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 wiki page también tiene algo de información útil.

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

La otra herramienta CC que puede 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.

12

He usado 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 provocó algunos dolores de cabeza iniciales en la configuración. Sin embargo, el soporte por correo electrónico fue absolutamente de primera clase para configurar todo. Recibí respuestas a mis preguntas tontas en literalmente minutos.

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

Siento que estamos utilizando casi todas las características avanzadas del producto y no hemos encontrado ningún error hasta ahora. Ndependen la integración, las secuencias de comandos NAnt anidadas, el etiquetado de la versión Perforce, lo que sea, lo estamos haciendo.

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

+0

¿Perforce es una herramienta de incongruencia? Perforce es fantástico para equipos de cualquier tamaño. Yo mismo lo uso para mi casa-desarrollo :) – sonstabo

+0

@sonstabo, estoy de acuerdo con eso, la mayoría de las pequeñas empresas van con SVN o GIT y Perforce se utiliza principalmente en las empresas más grandes. Utilicé Perforce y me gustó, pero estaba en una empresa de desarrollo de 1.000 cuando lo usé. –

3

Asegúrese de que el sistema que se decide en las escalas a la cantidad de proyectos que necesitará que le permite manejar ...

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

Lo primero que encontré fue que los desencadenantes de proyectos de CC.Net no son exactamente lo que necesita y el multiactivador no funciona bien con desencadenantes de proyectos. La forma en que funcionan los desencadenantes del proyecto (utilizan la comunicación remota para conectarse al servidor donde se almacena el proyecto (incluso si es un proyecto administrado por la misma instancia de CC.Net) y luego extraen todos los proyectos de ese servidor y buscan la lista secuencialmente buscar el proyecto que le interesa ...) significa que no se escala bien. Una vez que obtenga más de una cierta cantidad de proyectos, encontrará que CC.Net está tomando la mayor parte de la CPU para su máquina de construcción.

Por supuesto, es de código abierto, por lo que puede solucionarlo ... Y, estoy seguro de que está bien para un pequeño número de proyectos no interdependientes.

Para más detalles de los problemas que tenía y algunos parches para CC.Net ver aquí http://www.lenholgate.com/archives/cat_ccnet.html

+0

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 la cantidad de proyectos, donde CC & CC.Net podría entrar en juego. pero como dices, se mete en problemas cuando aumenta el conteo de proyectos ... gracias otra vez – zappan

+0

Incluso en mi versión altamente pirateada de CC.Net tengo problemas porque CC.Net usa 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. –

15

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

Estoy utilizando TeamCity actualmente 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 potente, gratuito para muchos usos, y tiene una característica clave: ejecución remota. Puede "comprometer previamente" su cheque directamente desde IDEA o Eclipse, ejecutar una o más configuraciones de compilación en el servidor de TeamCity, y solo comprometer los cambios si la compilación es exitosa (por ejemplo, compila y pasa todas las pruebas).

Dado que puede poner TeamCity y Hudson en funcionamiento en unas pocas horas, podría valer la pena coger ambos y ejecutarlos uno al lado del otro, junto con otros (como CruiseControl) que pueda imaginar . Si no puede hacer que un servidor de CI suba rápidamente para hacer una comparación lado a lado, al menos tiene un punto de datos para facilitar la instalación y/o configuración.

+6

+1 para Hudson. Vea también: usar Hudson como una herramienta de compilación .NET: http://stackoverflow.com/questions/616149/how-and-why-do-i-set-up-a-c-build-machine/616230#616230; CruiseControl vs Hudson: http://stackoverflow.com/questions/604385/what-is-the-difference-between-hudson-and-cruisecontrol-for-java-projects – Jonik

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: Continuous Integration and Better Unit Testing (el primer 1/3 sobre TeamCity) comprobaré también TeamCity. Me encanta el tablero de instrumentos de la unidad integrada y la interfaz de configuración.

Creo que todos deben ver este video antes de elegir CC.NET o TeamCity.

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

+2

+10 si pudiera. Fantástico enlace. –

+0

Excelente enlace !!!!! – dcinadr

+3

El enlace está muerto. El elenco de la pantalla está aquí http://media.wekeroad.com/Kona2.wmv – trailmax

0

He estado usando Teamcity durante los últimos 1 año y medio, y tengo una gran experiencia. He integrado varios proyectos .Net y Java y utilicé herramientas como MSBuild, Maven, etc. Encontré que Teamcity era bastante simple de configurar y trabajar. También logré que CI se ejecute para algunos proyectos sql, lo que fue un poco pesadilla, lo que podría haber sido peor con otras herramientas de CI.
Recientemente actualizado a Teamcity 8.0.6, que fue sencillo. También Teamcity proporciona un REST API que es muy útil para algunos escenarios.Si está utilizando powershell para automatizar compilaciones, hay varios scripts de integración de Psake/Teamcity disponibles en GitHub

Cuestiones relacionadas