2009-10-02 17 views
8

En este momento estamos construyendo una serie de aplicaciones C++ para la plataforma Win32. Pronto estaremos migrando a Linux y luego quizás más (32 y 64 bits para ambos).Cómo usar Hudson en la construcción de múltiples plataformas

¿Cuál es la práctica estándar, utiliza múltiples servidores hudson cada uno en su propia plataforma para hacer una compilación, o el servicio Hudson crea VM y crea?

No es claro para mí la mejor manera práctica de hacerlo.

Lo ideal es que solo quiera una caja con un montón de máquinas virtuales que ejecutan hudson, y luego se inicia compilaciones según sea necesario.

¿Existe un recurso alguien me puede apuntar a esto?

Respuesta

5

Usamos Hudson para administrar compilaciones de C/C++ (GNU C, GNU C++, Watcom C) para varios sistemas operativos. Para nosotros, el software está diseñado para Linux, Linux x64, QNX 4 y QNX6. La forma en que tenemos que configurar es:

  • 1 x máquina virtual para el servidor de Hudson, con Windows
  • 4 x máquinas virtuales, uno para cada tipo de esclavo, así que tengo 4 esclavos Hudson - 1 cada uno para QNX4, QNX6 y Linux 32 y Linux 64. Todos ellos se están ejecutando en el mismo servidor, al igual que diferentes máquinas virtuales, y no hemos tenido problemas. Construimos alrededor de 100 proyectos, divididos casi a partes iguales entre los 4 tipos de sistemas.

No necesita ningún hardware adicional. Hay un complemento Hudson que funciona con máquinas virtuales VMWare, para iniciarlas y cerrarlas según sea necesario.

Espero que ayude.

+0

Gracias - parece una buena configuración para nosotros también. – Tim

+0

Configuré nuestro sistema desde cero, así que sé que lleva tiempo, pero no es difícil. Me acabo de dar cuenta de que su pregunta fue publicada el año pasado. ¿Obtuviste algo corriendo? – Sagar

+1

tiene algunos consejos para configurar el reverso. el sistema actual es linux, y otras compilaciones deben ejecutarse bajo Windows. – myusuf3

2

Nunca he usado hudson para C++, pero para lo que planeas hacer, puede que tenga sentido mirar el VMWare plugin y ver si hará lo que quieras. Yo recomendaría tener solo un solo maestro de Hudson, si es posible. Lo que probablemente desee hacer es configurar una imagen de máquina de VMWare con un proceso Hudson Slave para cada entorno de destino y generar una compilación en ese esclavo.

+0

Esa es la meta ideal, pero no estoy seguro de lo práctico que es. Solo tengo que jugar con eso, supongo. – Tim

2

He jugado con Hudson en un escenario de múltiples plataformas un poco más que hace un año. Tenía un servidor hudson (que era ridículamente fácil de instalar) en una máquina y esclavos de construcción separados para cada una de las plataformas. Recuerdo que durante un tiempo uno de los clientes de compilación estaba en un VirtualBox en la máquina que alojaba el servidor Hudson. (Creo que tuve el servidor en una máquina virtual por un tiempo, también.) No recuerdo haber ningún problema principal con esta configuración.

Sin embargo, si quieres tener varias máquinas de construcción virtuales construidas en la misma máquina física, creo que necesitarás una máquina muy poderosa para eso. La compilación de C++ requiere una gran cantidad de recursos y, IIRC, cuando hudson inicia una compilación, la inicia en todas las plataformas al mismo tiempo.

+0

Sí, me doy cuenta de que puede que tengamos que tener varias máquinas y en ese caso puede ser o no más fácil simplemente ejecutar hudson en cada plataforma, aunque eso es una tontería. Idealmente, quiero que el único servidor hudson active cada esclavo. Supongo que tengo que morder la bala y comprar hardware adicional. – Tim

+1

Tim, solo necesita un servidor hudson, no uno para cada plataforma. Pero necesitarás un esclavo de compilación por plataforma. Puede probar esto con máquinas virtuales hasta que crea que está funcionando, pero al final probablemente no disfrutará de CI si construye tres plataformas en máquinas virtuales en la misma máquina física. – sbi

+2

Es bastante importante entender que solo * necesita 1 servidor hudson. Puede hacer todo lo demás con esclavos instalados en arquitecturas apropiadas. (* para interpretaciones razonables de siempre) –

1

Tenga en cuenta que no es necesario que exista ninguna relación entre el servidor que ejecuta Hudson y las máquinas esclavas que están creando sus aplicaciones de software. Debido a la magia de Java, puede conectar las diferentes máquinas esclavas al maestro utilizando JNLP. (un ejemplo) Entonces, ya sean máquinas físicas o virtuales, puede tener una que ejecute Windows, otra Linux; uno de 32 bits, otro de 64 bits; etc., lo que necesiten tus aplicaciones. Siempre y cuando todos tengan JRE instalado, pueden conectarse al maestro de Hudson e informar el estado de las compilaciones.

Cuestiones relacionadas