Pregunta

Me gustaría preguntarle qué entorno de compilación automatizado considera mejor, basado en la experiencia práctica. Estoy planeando hacer algo de desarrollo .Net y algo de Java, por lo que me gustaría tener una herramienta que sea compatible con ambas plataformas.

He estado leyendo y descubrí acerca de CruiseControl.NET , utilizado en el desarrollo de stackoverflow, y TeamCity con su soporte para los agentes de compilación en diferentes plataformas de SO y basadas 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, mucho menos en el hecho de que CC es de código abierto y TC está sujeto a licencia en algún momento cuando tiene muchos proyectos para ejecutar ( porque lo necesito para una pequeña cantidad de proyectos).

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

¿Fue útil?

Solución

He trabajado 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 sencillo 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 TeamCity también es muy valiosa. Para proyectos simples de .NET, 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 de control de origen). También hemos utilizado algunos scripts complicados de MSBuild con él y hemos realizado el encadenamiento de compilació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 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 desee. 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 mejor).

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 y al mismo tiempo hacer que el complejo sea bastante indoloro.

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 características de confirmación previamente probadas 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.

Otros consejos

Yo era / soy un gran admirador 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 Kona: integración continua y mejor prueba de unidad (el primero 1/3 sobre TeamCity) También revisaré TeamCity. Me encanta el panel de prueba de la unidad integrada y la interfaz de configuración.

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

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

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

Estoy usando TeamCity actualmente en un proyecto y generalmente 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 excelente: Remote Run. Puede " pre-commit " su registro directamente desde IDEA o Eclipse, ejecute una o más configuraciones de compilación en el servidor TeamCity y solo confirme los cambios si la compilación es exitosa (por ejemplo, compilaciones y todas las pruebas pasan).

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

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 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 en que Team City cuesta $$.

He usado CC.net y 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 control de origen y múltiples agentes de compilación que se ejecutan en sistemas operativos heterogéneos, lo que causó algunos dolores de cabeza de configuración iniciales. 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 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 los servicios del agente o del servidor, ni siquiera actualizar la página.

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

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

Sin querer lanzarle 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/

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

Uso CruiseControl.Net pero no lo recomendaría para construir muchos proyectos ... Tengo un arreglo (posiblemente un poco extraño) en el que tengo muchas bibliotecas estáticas de C ++ que compongo en aplicaciones. Cada biblioteca depende de otras bibliotecas y las aplicaciones extraen un conjunto de libs 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 disparadores de proyectos de CC.Net no son realmente lo que necesita y el disparador múltiple no funciona bien con los disparadores de proyectos. La forma en que funcionan los disparadores del proyecto (usan la comunicación remota para conectarse al servidor donde está almacenado 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 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 un pequeño número 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

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 pasado 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 cual fue una ventaja para nosotros, ya que somos una tienda de Microsoft.

No he usado TeamCity pero he escuchado algunas recomendaciones y se ve muy bien.

Tuve una experiencia configurando y ejecutando CruiseControl (versión Java) en Linux durante mi compañía anterior. Como sugiere la mayoría de la gente, no es lo más trivial de configurar. Debe comprender su marco de trabajo para llegar a la configuración viable / 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 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 de CC que puede echarle 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.

Una tercera opción que puede considerar: el crucero de Thoughtworks. Está construido en CruiseControl, pero ofrece muchas más funciones, una configuración más fácil, etc., etc. No es gratuito (ni de código abierto).

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

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 he usado herramientas como MSBuild, Maven, etc. Encontré que Teamcity es bastante simple de configurar y trabajar. También logré ejecutar CI para algunos proyectos sql, lo cual fue una 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 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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top