¿Cómo debería proporcionar los binarys de la biblioteca a los desarrolladores?

Quiero que sea más fácil para otros trabajar en mi repository. Sin embargo, dado que algunas de las dependencies comstackdas tienen más de 100 MB de tamaño, no puedo includelas en el repository. Github rechaza esos files.

¿Cuál es la mejor manera de manejar grandes binarys de dependencies? Crear las bibliotecas desde la fuente no es fácil en Windows y toma horas. No quiero que todos los desarrolladores luchen con este process.

Recientemente he estado trabajando en el uso de Ivy ( http://ant.apache.org/ivy/ ) con los binarys de C ++. La idea básica es que construyas los binarys para cada combinación de compilation. A continuación, comprimir cada combinación de compilation en un file con un nombre como mypackage-windows-vs12-x86-debug.zip. En su ivy.xml, asociará cada file zip con exactamente una configuration (por ejemplo, windows-vs12-x86-debug). Luego publica este package de múltiples files zip en un repository de Ivy. Puede alojar el repository usted mismo o puede intentar cargarlo a un repository Ivy existente. Debería crear un package de files zip para cada dependencia, y los files ivy.xml describirán la cadena de dependencia entre todos los packages.

Entonces, tus desarrolladores deben configurar Ivy. En sus files ivy.xml, enumerarán su package como una dependencia, junto con la configuration que necesitan (por ejemplo, windows-vs12-x86-debug). También necesitarán agregar un paso de resolución / recuperación de hiedra a su compilation. Ivy downloadá los files zip de su package y de todo lo que depende su package. Luego tendrán que configurar las tareas de descomprimir y mover en sus comstackciones para extraer los files binarys que están proporcionando y colocarlos en los lugares que esperan su compilation.

Ivy es una herramienta genial, pero definitivamente está simplificada para Java y no para C ++. Cuando todo está configurado, es bastante bueno. Sin embargo, en mi experiencia como una persona que no está realmente familiarizada con DevOps en absoluto, integrarlo en una compilation C ++ ha sido todo un reto. Descubrí que era más fácil crear tareas simples de ants que realizan las acciones requeridas de hiedra, y luego utilizar mi sistema de construcción "regular" (make) para llamar a esas tareas ant cuando sea necesario.

Así que también debo mencionar que la razón por la que analicé el uso de Ivy fue que estaba implementando esto en un entorno corporativo donde no podía cambiar los files del sistema. Si usted y sus desarrolladores pueden hacer eso, es posible que esté mejor con un sistema RPM / APT. Debería configurar un repository y hacer que sus desarrolladores agreguen su repository al file de configuration de RPM / APT apropiado. Luego ejecutaban commands como sudo apt-get install mypackage y apt-get hacía todo el trabajo de download e instalar los files correctos en los lugares correctos. No sé cómo funcionaría esto en Windows, tal vez alguien haya creado un cliente de Windows RPM / APT.

    Intereting Posts