¿Experiencia de compilación remota del servidor de compilación continua (cc.net, hudson, bamboo, etc.)

9

Actualmente utilizamos una vez el servidor cc.net para nuestro proceso de compilación, que construye tanto .net (usando msbuild & nant) como java (usando maven y ant).

CC.net monitorea el control de origen y desencadena una compilación remota que se ejecuta en un servidor separado. CC.net luego recopila los resultados.

Cuando ejecutamos la compilación remota, normalmente:

  • ejecuta nunit o junit o similar utilizando datos simulados
  • opcionalmente ejecuta un script de base de datos para crear una nueva instancia de base de datos o restaurar una base de datos desde una posición conocida.
  • ejecuta selenio o similar para probar la interfaz de usuario
  • ejecuta emma o ncover para la cobertura del código
  • construye el sistema para varios entornos de implementación (prueba, aceptación, producción)

Es posible que tengamos varias compilaciones ejecutándose a la vez, algunas .net y algunas Java (de diferentes equipos de proyecto).

Hacer que las compilaciones remotas funcionen es bastante lento cuando configuramos un nuevo proyecto y creemos que debe haber algo más adecuado para las compilaciones remotas que cc.net.

¿Alguien tiene alguna experiencia con compilaciones remotas con sistemas de integración continua?
Realmente no quiero listas de características de los servidores de CI, agradecería saber cómo los ha utilizado en un entorno de varios idiomas y servidores.

Chris Buckett
fuente

Respuestas:

8

Hudson (Actualización: en el mundo de hoy, usaría Jenkins, un tenedor de Hudson).

He usado Hudson en entornos empresariales Java y .NET para proyectos de alta visibilidad (probablemente has estado en algunos de los sitios). Hudson es sólido desde el principio, pero la mejor parte es que hay muchos complementos para hacer casi cualquier cosa que desee. Hudson es altamente configurable, tiene una gran comunidad y es muy fácil de configurar en un entorno de clúster si necesita varias compilaciones a la vez. Es mi servidor de CI favorito de todos los que he usado (CC.NET, Hudson y TFS).

Además, puede usar el complemento ChuckNorris para que le dé el visto bueno hacia arriba o hacia abajo.

Ryan Hayes
fuente
1
Hudson es una buena opción si no está haciendo nada exótico, pero al final del día si no puede hacer lo que está tratando de hacer en un script por lotes, tampoco es probable que Hudson lo haga muy bien.
Bill
Hudson se ha bifurcado en Jenkins y Oracle Hudson. ¿Quieres compartir cuál usar?
1
@ Thorbjørn: Soy pro-Jenkins. Hay varias razones , pero la más importante para mí es que Jenkins está teniendo un desarrollo más activo, en gran parte porque Kohsuke Kawaguchi, el hombre principal detrás de Hudson, está en el campamento de Jenkins. Y parece que siente que Jenkins es la verdadera continuación del proyecto que comenzó . ¡Ah, y por último, Jenkins tiene un logotipo que no es un clip art de Microsoft!
Tom Anderson
@ Thorbjørn - Estoy de acuerdo con Tom. No he usado Hudson en aproximadamente un año (actualmente uso TFS), pero ese es el consenso general que he escuchado es que Jenkins es el camino a seguir. Una vez más, tampoco lo he usado desde que fueron bifurcados, pero si tuviera que recogerlo nuevamente, probablemente seguiría la ruta de Jenkins.
Ryan Hayes
7

Nos enfrentamos a esta pregunta hace algún tiempo y decidimos ir con TeamCity . Solo miramos a Hudson, CC y TeamCity. La elección fue fácil de hacer: TeamCity terminó siendo nuestro servidor de compilación. Tenga en cuenta que no soy un profesional en esto y fue mi primera experiencia con servidores de compilación en ese momento.

Hudson : no tenía idea de qué hacer y dónde leer al respecto. Y aunque podía entender algo allí, no era una opción, demasiado trabajo. Decidí echar un vistazo a CC.

Control de crucero : igual que Hudson, pero de una manera ligeramente diferente. Absolutamente nada se puede entender allí sin un manual y una tonelada de ayuda de google. Acabo de echar un vistazo a TC.

TeamCity - TeamCity se sintió como el cielo después de los dos primeros. Es el más útil de esos tres. Instale, vaya al panel de administración, configure un proyecto (muestre dónde está el SVN, apunte a crear archivos, especifique cobertura / pruebas unitarias, etc.) y comience a disfrutar. Y aunque no puedo decir que no busqué en Google, el 95% del proceso de configuración fue muy fácil y claro. Recomiendo esta herramienta Ve y échale un vistazo. Te ahorrará muchos nervios y tiempo :)

También debo señalar que TC no es gratis. Aunque tienen una edición gratuita que se puede usar en proyectos comerciales con algunas limitaciones (configuración de construcción máxima 20), eche un vistazo en su página de precios.

PD: Parece que trabajo para TC, pero realmente no :)

Jefim
fuente
3

Utilizamos CC.NET 1.4.

Estamos tratando de actualizar a 1.6 ... qué pesadilla.

Es poderoso ... pero SOLO si lo usas bien y entiendes cómo todo encaja. Lo cual es mucho pedir de todo el equipo. Tenemos 'buildmasters' que tienen acceso al servidor y pueden cambiar las configuraciones. Aun así, hay muchas búsquedas en Google con respecto a ccnet y todo el negocio se ha convertido en un gran desastre.

Personalmente quiero mudarme a TeamCity.

Te recomiendo que te mantengas alejado de ccnet.

Nadie
fuente
1

buena pregunta. Actualmente también estamos tratando de descubrir qué herramienta se adapta mejor a nosotros. Así que solo podré contarte un poco de experiencia. Pero estaríamos muy interesados ​​en el sistema de CI que eligió ahora y por qué razones. Así que por favor manténganos informados.

Estoy muy impresionado de cuán alto es el nivel de su CI. Tengo que admitir que tenemos menos requisitos porque todavía no ejecutamos pruebas de IU y no creamos instancias de bases de datos o similares, solo usamos simulacros para nuestras pruebas unitarias.

Ahora a nuestras experiencias hasta ahora:

Para proyectos Java, estamos utilizando Bamboo, que funciona bien con JUnit y Emma. Y no hay tanto esfuerzo para establecer un nuevo proyecto.

Para proyectos .NET todavía estamos buscando la mejor solución

  • Control de crucero: no pudimos hacerlo funcionar todavía debido a problemas con la conexión a nuestro repositorio

  • TFS:

    a) Hay algunos pasos de configuración necesarios para poder ejecutar la primera compilación.

    b) Hay algunos inconvenientes en los que debe superar los derechos de acceso. Hay muchos roles que puede definir y debe saber exactamente qué derechos tiene su proceso de compilación y cuál tiene su cuenta de inicio de sesión personal. Pero si tiene suficiente tiempo para administrar, puede definir cada granularidad particular que necesita.

    c) Con respecto a las bibliotecas a las que se hace referencia, también hay algunas cosas que se deben administrar si desea compartir bibliotecas para muchos proyectos y no desea manejarlas en cada proyecto

    d) Ejecutar la prueba NUnit no es tan fácil como pensábamos. Solo es fácil si está utilizando la ejecución de prueba proporcionada por Visual Studio, pero esto no es NUnit

    e) Todavía no intentamos ejecutar NCover (primero lo primero :-))

  • Hudson: Próxima herramienta que intentaremos. Parece tener un plugin realmente bueno y fácil para .NET, te contaré cómo funcionó

  • Bamboo: Primera predicción que obtuvimos: "Demasiado específico para Java". Pero tal vez intentemos el complemento .NET, sin embargo, te lo haré saber

Espero que podamos continuar esta discusión e intercambiar experiencias.

Andy


fuente