En integración continua, ¿cuál es la mejor manera de lidiar con las dependencias de aplicaciones externas?

StackOverflow https://stackoverflow.com/questions/119724

Pregunta

Al utilizar nuestro servidor de integración continua TeamCity, hemos descubierto algunos problemas que no estamos seguros de cuál es la mejor manera de manejarlos.Es decir, cómo hacer referencia a aplicaciones externas que nuestra aplicación requiere en el servidor CI.

Esto se descubrió inicialmente debido a una dependencia de Crystal Reports, por lo que instalamos Crystal Reports en el servidor para solucionar el problema inmediato.Sin embargo, a medida que trasladamos más aplicaciones al servidor CI, encontramos más dependencias.

¿Cuál es la mejor estrategia aquí?¿Es para continuar instalando las aplicaciones requeridas en el Servidor?

Gracias

¿Fue útil?

Solución

Siempre que sea posible, haga que las dependencias externas formen parte de su sistema de compilación.Por ejemplo, registre el instalador en su sistema de control de versiones y tenga un paso que lo verifique y lo ejecute en modo silencioso (muchos instaladores admiten un modo sin acción del usuario, a veces usando la línea de comando /s).

De esta manera, si necesita configurar otra máquina de compilación para una sucursal o simplemente para hardware nuevo, todo es repetible.

Otros consejos

Si sus compilaciones requieren que la aplicación real complete la compilación, entonces probablemente debería continuar instalando la aplicación en su servidor de compilación.

Si solo necesita referencias a archivos DLL o ensamblados de la aplicación, entonces lo que hemos hecho en mi empresa es crear 'SDK' instalables de las referencias requeridas para una aplicación en particular e instalarlos en nuestras máquinas de desarrollo y compilación en sitios conocidos. directorios de bibliotecas a los que hacen referencia nuestras soluciones.

En la máquina de compilación, nuestros pasos previos a la compilación instalan la versión correcta de las dependencias y luego las limpian cuando terminamos.

Recientemente, hemos pasado a utilizar máquinas virtuales para nuestras máquinas de compilación que nuestro proceso de compilación activa.A estas máquinas virtuales se les instalan los SDK como una compilación previa y luego se restauran a su estado de instantánea después de la compilación.Teníamos algunas dependencias que eran casi imposibles de desinstalar, por lo que esto fue un punto de partida limpio en todo momento.

Si usa Maven para compilar, puede definir sus dependencias en el archivo pom.xml.Luego se descargarán automáticamente si es necesario.

No estoy seguro de haber seguido correctamente...

¿Asumo que su aplicación depende de esta aplicación externa, mientras se construye?En ese caso debería estar en la máquina haciendo CI...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top