2008-11-14 12 views
5

Varias veces en mi carrera, he trabajado en un grupo de software que determinamos que

a) Necesitábamos un sistema de construcción/prueba
b) Debemos escribir nuestra propia
c) Nosotros puede tener un desarrollador gastar una semana, hacerlo y no debería tener que volver a tocarloIdioma Agnóstico Construir Sistema de Gestión

Cada vez, esto ha resultado en un sistema que solo parece funcionar para la persona que lo escribió y requiere su atención constante . He pasado tiempo en varias ocasiones buscando una herramienta que pueda tomar que sirva a nuestras necesidades, pero que venga con las manos vacías. Generalmente, las herramientas como este servidor son un mercado muy estrecho. Estoy en el punto nuevamente de necesitar algo como esto. ¿Hay algo por ahí, o lo escribimos de nuevo?

Éstos son mis requisitos en orden de prioridad (el último pocos son simplemente agradable tener):

  1. capacidad de manejar una acumulación de varios proyectos. Tenemos varios componentes que proporcionan cosas que otros componentes usan y usan cosas de otros componentes. Un desarrollador debería poder verificar 1 componente y hacer cambios sin tener que construir el mundo. Las dependencias fuera del proyecto se deben extraer automáticamente. Entonces, una forma de poder empujar y tirar los objetos construidos a un servidor es fundamental para esto. Otro aspecto de esto es la capacidad de poder desplegar todas las dependencias a un directorio local para el desarrollo en el camino.

  2. No se preocupe exactamente de cómo se construyen las cosas. Esto puede sonar extraño, pero no quiero que el sistema de compilación se preocupe por compilar mi código. Ya hay excelentes herramientas que hacen esto para cada idioma: Ant, CMake, etc. Solo quiero decirles cómo llamar para que las cosas se desarrollen y de qué producto debería preocuparse. De esta forma, el Proyecto A puede estar en Java, el Proyecto B puede estar en C++, se entiende la idea.

  3. tener alguna manera de ejecutar las pruebas en la salida

  4. muestran los resultados actuales de construcción/prueba de una página web

  5. correo electrónico los resultados

  6. Integración con RCS (usamos SVN)

+0

creo que va a tener que aclarar por qué cosas como guiones y/o Hormiga, msbuild, etc. están a la altura. También parece indicar que desea almacenar binarios en el control de versiones o al menos en un servidor de compilación. ¿Por qué no exponer los resultados de la máquina de compilación en un sitio ftp sin la etiqueta/revisión? – Tim

Respuesta

1

Adam,

me di cuenta de la respuesta de las Hormigas, y como un Anthiller, tengo que decir que tenía razón. Una de las cosas que Anthill hace muy bien es dejarle definir dependencias entre proyectos. La versión de código abierto está enfocada en Java, mientras que la herramienta comercial es independiente del idioma a pesar del nombre.

Le permitiría definir dependencias entre proyectos (o partes de proyectos) basándose en criterios como estado (última versión exitosa o última versión aprobada por QA o ...) y/o número de compilación o rama. Es algo de lo que estamos muy orgullosos. En el momento de la compilación, los artefactos de compilación se transportan entre los servidores, se guardan los cachés para la ayuda de rendimiento y todas esas cosas buenas.

En cuanto a los otros criterios:
2) Anthill (como la mayoría de las herramientas de automatización de compilación) ejecutará sus secuencias de comandos de compilación existentes, por lo general sin modificaciones.
3) Las pruebas (una vez más sus tecnologías existentes) pueden ejecutarse en tiempo de compilación o contra una compilación existente.
4) Los resultados se muestran en la web (de nuevo típico de herramientas de automatización de compilación)
5) El correo electrónico es fácil
6) Tenemos más de integraciones decenas de SCM, y usamos SVN internamente de modo que la integración es, naturalmente, uno de nuestros mejores .

aplausos,

Eric

+0

Gracias Eric - Lo veré – AdamC

+0

Solo traté de mirar alrededor de su sitio, pero parece que no funciona ... Trataré de verificarlo más tarde. – AdamC

+0

Nuestro ISP fue atacado por unas horas ayer, creo que todo está bien en este punto. – EricMinick

1

de Continuum Apache y Atlassian de Bamboo se encontrará con el # 2-6.

Hacer el n. ° 1 de una manera independiente del idioma es un poco más difícil.

Maven y Ivy funcionan para las dependencias de Java.

1

He usado Visual Build, que me pareció una forma muy útil de unir a todos estos compiladores dispares, corredores de prueba y otras cosas juntas en un sistema flexible. Piensa en el Programador de Windows en los principales problemas. Básicamente es un gran motor de ejecución de tareas, con tareas listas incluidas para todos los principales sistemas de control de fuente comercial, compiladores, etc. Puede crear carpetas, enviar correos electrónicos y un montón de otras cosas, todo con una interfaz de usuario bastante simple.

1

Investigué, pero nunca usé, AntHill. Hay una versión open source y una commercial version.Creo que hará lo que quiera, pero sería útil si le diera más requisitos, como si necesita hacer compilaciones automatizadas durante la noche, lo que usa para control de fuente, etc.

En mi compañía actual, escribí mío. La forma en que funciona la mía es exactamente lo que dices; no tiene idea de cómo construir el software. Le da un montón de líneas de comando para ejecutar (almacenado en una base de datos), captura el valor de salida y stdout y stderr, y si el valor de salida no es cero, marca la construcción como roto. Tenemos alrededor de 8 proyectos que pueden construir y ejecutar pruebas unitarias. Todos comienzan borrando el directorio y actualizando la fuente de subversión.

0

Yo recomendaría que si se va a escribir un sistema de prueba que se tiene en cuenta el uso de la Test Anything Protocol. TAP ha estado en uso por más de 20 años, y es ampliamente utilizado, especialmente para los módulos de CPAN. formato general

de TAP es:

1..N 
ok 1 Description # Directive 
# Diagnostic 
.... 
ok 47 Description 
ok 48 Description 
more tests.... 

Por ejemplo, la salida de un archivo de prueba podría ser:

1..4 
ok 1 - Input file opened 
not ok 2 - First line of the input valid 
ok 3 - Read the rest of the file 
not ok 4 - Summarized correctly # TODO Not written yet 

Ir a testanything.org para más información.

Los ejemplos se copian de http://en.wikipedia.org/wiki/Test_Anything_Protocol

Cuestiones relacionadas