2011-01-12 21 views
18

Tenemos nuestro código fuente almacenado en repositorios de horno/Mercurial; utilizamos MSBuild para construir nuestro producto y tenemos Pruebas Unitarias que utilizan MSTest (Pruebas unitarias de Visual Studio).Recomendaciones para la integración continua de Mercurial/Kiln + MSBuild + MSTest

Qué soluciones existen para implementar una máquina de integración continua (es decir, máquina de compilación).

Los requisitos para ello son:

  • Una acumulación debe ser expulsado de cuando sea necesario (es decir, el código ha cambiado en los repositorios que nos interesan)
  • Antes de la construcción actual, la última versión de la fuente código debe ser adquirido desde el repositorio que estamos construyendo desde
  • la construcción debe construir todo el producto
  • la construcción debe construir todo Pruebas de Unidad
  • la construcción debe ejecutar todas pruebas unitarias
  • Se debe enviar un resumen de éxito/falla después de que la construcción haya finalizado; esto debe incluir información sobre la construcción en sí, pero también sobre qué Pruebas unitarias fallaron y cuáles tuvieron éxito.
  • El resumen debe contener los conjuntos de cambios en esta compilación que aún no estaban en la compilación exitosa anterior (!)
  • El sistema debe ser configurable para que pueda compilarse desde múltiples ramas (/ Repositorios).

Lo ideal es que este sistema se ejecute en una sola caja (nuestro producto no es tan grande) sin ningún componente de servidor.

¿Qué soluciones hay actualmente disponibles? ¿Cuáles son sus pros/contras? De la lista anterior, ¿qué se puede hacer y qué no se puede hacer?

Gracias

Respuesta

5

Nuestro producto BuildMaster hace todas las cosas que enumeró por diseño y no es una edición gratuita, algo limitada (por ejemplo, que sólo puede tener un número limitado de seguimiento de problemas proveedores de integrarse con ella, el cambio de base de datos la herramienta de empaquetado de scripts no está incluida en la versión gratuita, etc.) para 5 usuarios o menos.

7

TeamCity, de JetBrains, los fabricantes de ReSharp, harán todo eso. Tendrá que configurarlo para lo que significa específicamente "construir su producto", pero puede configurar todo lo que especificó con él.

El software puede alertar sobre compilaciones fallidas, incluso para alertar solo a la persona responsable de registrar el código que rompió la compilación. Incluso viene con páginas web útiles que puedes ver para ver solo tus propios cambios, las compilaciones que han realizado con éxito, cuáles están pendientes y cuáles se están ejecutando actualmente.

Dado que es un producto distribuido, puede hacer que crezca con su organización y producto. Si en algún momento descubre que está esperando que la compilación se complete demasiado, debido a que muchas compilaciones se están poniendo en cola, puede agregar más agentes de compilación. Los agentes de compilación son básicamente programas de cliente separados que instala en máquinas adicionales, que ejecutan las configuraciones de compilación reales.

Viene en dos sabores, la versión profesional y la versión empresarial. La versión profesional es gratuita, puede contener hasta 20 configuraciones de compilación, 20 usuarios y 3 agentes de compilación.La versión empresarial tiene una cantidad ilimitada de usuarios y configuraciones de compilación, y también puede usar la seguridad basada en LDAP (usuarios de dominio verificados). También hay otras bonificaciones de la versión empresarial. También puede comprar licencias para más agentes de compilación si necesita más de 3.

Ahora, si "no hay componentes de servidor" significa que no desea que actúe como un servidor web, usted va a estar presionada para encontrar algo que reaccione a sus compromisos.

Sin embargo, si quiere decir que no desea tener que instalar un sistema operativo de servidor, TeamCity también puede trabajar en las versiones de estaciones de trabajo de Windows. Eso no quiere decir que no deba considerar configurar un servidor adecuado para ello, pero se ejecutará en una estación de trabajo si eso es lo que necesita.

+0

Me deshice de CruiseControl para TeamCity y todo mi equipo está muy satisfecho con el cambio. Usamos scripts de MSBuild para los proyectos y NUnit para las pruebas. Desarrollamos principalmente aplicaciones C++ y C# – T33C

0

Siempre me gusta BuildBot (y he contribuido con algún código). Es bastante fácil de configurar y ejecutar en cualquier sistema operativo, y para hacer tareas simples como las que dice, y notablemente flexible si lo necesita.

Lo que podría faltar son las traíllas y raspadores incluidos en las baterías y/o los generadores de informes que vienen con otros servidores CI comerciales, especialmente para los marcos Enterprise-y.

También se adapta bastante bien, Mozilla y Chromium lo usan, entre otros.

2

Lo que ha descrito son los conceptos básicos de una herramienta de CI, por lo que cada herramienta de CI debe estar bien.
Uso Cruise Control.NET pero está obstruido con Mercurial y no es muy directo a primera vista. Sin embargo, estoy feliz con eso. Otras herramientas que vienen a mi mente son Hudson, Team Build (de TFS) y TeamCity.

No he probado otras herramientas, pero se puede ver ventajas/desventajas aquí:

EDITAR: Olvidé mencionar que Hudson y Cruise Control.net son de código abierto profesional ject, puede escribir fácilmente complementos y parches en su instalación.

EDIT²: Los errores de Mercurial parecen corregidos en la próxima versión 1.6 de ccnet (cambios realizados en el enlace esta semana).

Cuestiones relacionadas