En mi compañía, actualmente estamos investigando varias estrategias para acelerar nuestras construcciones de CI. Hemos perfilado nuestras construcciones y determinamos que estamos limitados por un cuello de botella de E/S. Tenemos bastantes opciones para hacer frente a eso en el futuro cercano (~ 1-2 meses) pero realmente me gustaría ver una mejora ahora.¿Es sensato usar un ramdisk en un servidor de compilación?
Propuse el uso de un ramdisk como el proceso de finalización y la ubicación del archivo de compilación. Por supuesto, las salidas y registros de compilación se almacenarán en el disco físico.
¿Es sensato o hay inconvenientes importantes en este enfoque? No busco respuestas que tengan en cuenta el hardware, sino que la interacción entre los sistemas de compilación comunes (por ejemplo, MSBuild) y un ramdisk causará cualquier problema y si hay otros riesgos que debo tener en cuenta.
Una simple nota: supongo que estás hablando de compilaciones nocturnas aquí? en ese caso, por supuesto, debe exprimir el máximo de compilaciones desde el principio y las pruebas ... Si fuera de compilación diaria, sugiero mantener el tiempo de compilación alrededor de 5 Mn como máximo para que los desarrolladores puedan obtener una respuesta rápida sobre posibles problemas en cada compromiso: en este caso, la mayor parte del tiempo es útil hacer una compilación * incremental, es decir, simplemente hacer una actualización svn (hg/git/etc.), y usar Make (o Ant, Nant, etc.) para volver -compilar lo que ha cambiado. Con un buen Makefile escrito, también podría acelerar las cosas dramáticamente. Solo mi 0.02 € :-) –
Estoy hablando de CI aquí (compilación después de cada confirmación). Ya aprovechamos las construcciones incrementales para eso, pero gracias. –
@Christophe Muller, haciendo una declaración general de que una construcción debería ser 'máximo de 5 Mn' es realmente ridícula sin conocer el entorno, el tamaño y los requisitos de la construcción. Tenemos un producto que se ejecuta en un servidor de CI y se genera en menos de dos minutos, incluida la compilación y el empaquetado. Tenemos otro producto que incluye varias soluciones .NET, varios servicios nativos de Windows, múltiples proyectos de Adobe Flex, pruebas de unidades, cobertura de códigos, empaquetado y despliegue automatizado en un rack de prueba. Todo el proceso (que no se ejecuta con cada check-in) dura más de dos horas y media *. –