2008-10-10 15 views
8

Recientemente, hace varios años, los desarrolladores hicieron las construcciones que fueron a los clientes. Esto fue obviamente un desastre por razones demasiado numerosas para enumerarlas.¿Qué herramientas recomienda para construir automáticamente su aplicación?

Luego, cuando comenzamos a aprender los errores de nuestras formas, buscamos una forma de autocompilar toda la aplicación en una máquina de creación dedicada. La cultura en ese momento era muy reacia a traer herramientas externas, por lo que construimos nuestro propio sistema de autobuild escribiendo una aplicación VB.

Esto funcionó bien por un tiempo, hasta que la estructura del proyecto comenzó a cambiar, se agregaron nuevos proyectos y necesitábamos construir la aplicación de diferentes maneras. Luego, las debilidades de nuestro autodesarrollador manual se hicieron evidentes y, con el tiempo, cada vez más onerosas. Esta enfermedad ha progresado hasta el punto en que el QA (propietario de nuestro proceso de compilación) ni siquiera puede mantener el autoconstructor porque requiere cada vez más habilidades de programación. Cada vez que agregamos un proyecto o cambiamos algo en un proyecto existente, consume más tiempo de desarrollador solo para que funcione. Hubo días en que no pudimos producir una construcción porque el sistema estaba roto.

Ahora estoy en una posición en la que puedo cambiar este proceso, y estoy buscando eliminar todo el sistema y poner algo más en su lugar. Mis objetivos son:

  • Disponen de un sistema de autoconstrucción que se puede ejecutar sin interacción humana a una hora específica todos los días. Debería ser capaz de reunir todo el código fuente, compilar todas las aplicaciones, crear las configuraciones, poner los productos terminados en un recurso compartido de red, y posiblemente activar el sistema de prueba automatizado para poner en marcha (utilizamos QTP).
  • El sistema de autoconstrucción debe ser lo suficientemente flexible como para adaptarse fácilmente a los cambios en el proyecto sin necesidad de una revisión importante.
  • Debe ser lo suficientemente simple para que QA pueda ser el propietario del sistema y no requerir recursos del desarrollador para realizar cambios en la forma en que se crean.

¿Cuáles son sus experiencias? ¿Puedes recomendar un sistema de autoconstrucción? ¿Debería tener diferentes objetivos?

Respuesta

4

Definitivamente mira en MSBuild si estás en la pila de Microsoft.

Joel siempre habla y habla de lo genial que es FinalBuilder, por lo que también valdría la pena echarle un vistazo.

5

Actualmente estoy usando CruiseControl integrado con Ant para controlar las compilaciones de proyectos. Esto permite la flexibilidad de los cronogramas de compilación y significa que puede automatizar todo el proceso de compilación con bastante facilidad usando las secuencias de comandos Ant. Además, durante los periodos de fijación de defectos, puede configurar CruiseControl para ver los envíos de control de origen en lugar de períodos de tiempo y compilarlos cuando se produzcan. Esto permite a los desarrolladores obtener comentarios muy rápidos sobre las reparaciones de defectos.

+0

+1 para Cruise Control, I moonlight como ingeniero de construcción de mi empresa y lo uso para construcciones nocturnas (más de 300 teléfonos en varios productos) y también lo uso para versiones de lanzamiento. – omermuhammed

+1

Icónicamente, ahora he cambiado a Hudson :) IMO, es mucho más refinado que CC y mucho más fácil configurar diferentes tipos de proyectos. – workmad3

1

A partir de las herramientas entregadas con MS Visual Studio es posible que desee utilizar MSBuild. Los conjuntos de herramientas Community adicionales para MSBuild incluso le darán la posibilidad de verificar el código de Subversion y salida zip.

Lo estamos utilizando con éxito en nuestra empresa. Los proyectos constan de varias soluciones con más de 100 subproyectos. Funciona de maravilla.

1

Visual Build Pro es bueno, si sus máquinas de construcción son Windows. Creo que esto llenaría el requisito que tiene sobre QA que posee el sistema. Pero no me malinterpretes, es bastante poderoso.

4

Acabamos de migrar de un conjunto de scripts Perl laminados a mano a una configuración Buildbot. Lo encontré porque eso es lo que Google's using for Chrome.

Puede hacer nightlies, o se puede integrar con el control de código fuente para hacer una compilación de prueba aislada cada vez que alguien hace un checkin, o una variedad de otras cosas. También es paralelo; puede tener más de una máquina en la granja de construcción, ya sea para tareas especializadas o simplemente para manejar más carga.

Todo el sistema está escrito en Python, por lo que es independiente de la plataforma, lo cual es importante si necesita compilar en más de una plataforma. Puede hacer cualquier cosa que pueda hacer desde la línea de comando; lo tenemos llamando a MSBuild para componentes de modo de usuario, un DDK build para piezas en modo kernel, y productos en ejecución para compilaciones de pruebas unitarias.

Fuera de la caja es compatible con most OSS source control tools, pero si está utilizando TFS o alguna otra cosa, es posible que deba modificar el paquete que instala en las máquinas esclavas.

+0

+1 para buildbot! Cambié de Cruise Control a BB recientemente, las ventajas son muchas (configuración más sencilla, seguimiento de archivos de registro arbitrarios, depuración fácil, bot cómico de control de IRC ...) – richq

2

Creo que está en el camino correcto aquí.

Quien cuide de su proceso de construcción automatizado debe tener una comprensión fundamental de cómo se adapta su solución. Esto no significa necesariamente saber cómo escribir soluciones de código o arquitecto, pero requerirán una sólida comprensión de cómo compila la solución, se empaqueta, etc.

Es posible que deba compartir la responsabilidad de las construcciones entre personas o equipos para lograr esta. Yo diría que una creación diaria es una "responsabilidad del equipo".

Miraría establecer una configuración de construcción de línea de base que pueda ampliarse para construcciones de "uso especial" (además de simplemente crear una versión de lanzamiento), p. comunicados internacionalizados, Herramientas FXCop/config calidad, construyen + Pruebas de unidad de ejecución, integración continua construye, una configuración de construcción para funcionar en estaciones de trabajo de desarrollo, etc.

lugar, me gustaría tratar de lograr lo siguiente:

  • versionado automático, etc firmar
  • Capacidad para producir una salida detallada (registro) para ayudar versión de depuración rompe
  • en ese punto - que debe manejar los errores correctamente, captar la mayor cantidad de información y registrar correctamente
  • Consiste ncy - Se debe trabajar de la misma manera cada vez para producir resultados repetibles
  • ejecutarse en un entorno de acceso limpio, limitada
  • bien comentado/documentada de manera que pueda ser entendida por el personal nuevo, etc.
  • opción para generar notas de la versión, compilar métricas, producir informes (si esta opción está disponible)
  • Capacidad para implementar en entornos múltiples
  • Admite diferentes formas de obtener el código fuente del control de fuente, por ejemplo por changeset, etiqueta, fecha, etc.
  • En cuanto a recomendaciones de herramientas, he usado FinalBuilder, Visual Build Pro, MSBuild/Team Build, nAnt, CruiseControl y CIFactory plus y buenos archivos por lotes anticuados.

    Cada uno tiene sus pros y sus contras, no voy a hacer una recomendación, excepto para decir que los productos con soporte de interfaz de usuario decente fueron un poco más fáciles de trabajar, pero a veces fueron mucho menos poderosos. Si está trabajando con VIsual Studio, MSBuild es muy poderoso, pero tiene una curva de aprendizaje algo empinada.

    +0

    Buena respuesta, pero realmente desearía que hubiera incluido algunas más pros y contras como los ves, ya que parece que has usado una buena gama de herramientas. +1 –

    5

    Uso FinalBuilder y FinalBuilder Server para compilaciones nocturnas. A veces es un poco problemático, pero si lo piensas bien es bastante fácil crear proyectos extensibles que puedan construir el tipo de proyecto X, compilar su base de datos a partir de scripts de cambio y desplegarla en un servidor de prueba.

    También puede manejar todo tipo de cosas extrañas y maravillosas como crear una creación nocturna y subirla a un FTP o crear imágenes ISO automáticamente.

    1

    Utilizamos CruiseControl.NET y UppercuT (que usa NAnt) para hacer esto. UppercuT utiliza convenciones para la construcción, por lo que es realmente fácil para alguien comenzar respondiendo tres preguntas (¿Cuál es la solución nombrada? ¿Cuál es la ruta al control de la fuente? ¿Cuál es el nombre de su compañía?) Y usted está creando.

    http://code.google.com/p/uppercut/

    Algunas buenas explicaciones aquí: UppercuT

    0

    usamos el buildbot Hudson para la construcción de aplicaciones web en Java grande de scripts de construcción de hormigas. Hudson es muy dulce para nuestros propósitos. Tiene una configuración maestro/esclavo, por lo que las compilaciones se pueden realizar al mismo tiempo (en un temporizador oa pedido). Los nodos esclavos pueden ser cualquier combinación de SO/hardware, siempre que cuente con las herramientas de compilación necesarias y esté en la red (y no se bloqueará cada 10 min).

    Interfaz basada en la web completa que incluye salida de consola en vivo, registros de cambios, artefactos de la compilación están disponibles en toda la red, incluidas las compilaciones anteriores (si tiene éxito). ¡Salsa impresionante!

    Cuestiones relacionadas