2012-04-27 9 views
64

¿cuál es la mejor práctica de distribuir binarios de un proyecto github?¿cuál es la mejor práctica de distribución de binarios de un proyecto github?

me ocurre:

  • Crear una carpeta bin en su proyecto en el que guarde una copia de los binarios. Sin embargo, github está destinado a almacenar código fuente y no archivos binarios Almacenar en grande y cambiar regularmente los binarios puede ser costoso como el espacio en disco y el ancho de banda?
  • Cargue una copia de los archivos binarios al github pages del proyecto , o utilice un sitio web aparte para alojar sus archivos binarios. Sin embargo, eso no siempre es factible y requiere más trabajo (manual) para mantener los binarios actualizados, prefiero que los binarios se actualicen automáticamente o con una sola acción .
+0

Esta pregunta es acerca de dónde alojar los binarios, y fuera de tema recomendaciones dadas sobre dónde alojar archivos – random

Respuesta

17

Es claro para mí ahora que es importante no almacenar binarios en su propio proyecto github. Por lo tanto, deberá almacenar binarios en otro lugar. Las posibles soluciones que encontré son:

  • Almacene los binarios en un submódulo separado (dalores idea). Tiene sentido almacenarlos en sus proyectos github pages, que usa para alojar el sitio web de sus proyectos a través de github.
  • Si solo tiene unos pocos archivos binarios o zip, puede cargarlos en github a través de Descargas -> Cargar un archivo nuevo. Sin embargo, esta característica es bastante limitada, no puede colocar archivos en carpetas estructuradas.
  • En el caso de los archivos java jar, existen soluciones como Nexus para administrar sus bibliotecas.
  • tienda los binarios en un sitio completamente independiente que se aloje mismo
+6

¿Por qué es importante no almacenar binarios en su proyecto github? –

+0

su código fuente normalmente está en desarrollo continuo, teniendo muchas confirmaciones y pequeños cambios todo el tiempo. Los binarios, por otro lado, son compilaciones generadas de versiones estables de su código que nunca deberían cambiar después de su lanzamiento. Y para los binarios, le gustaría tener un directorio que liste toda la versión lanzada, no solo la versión más reciente. Es totalmente opuesto el uno al otro. –

+1

Las cargas GitHub ahora están en desuso. Consulte https://github.com/blog/1302-goodbye-uploads – akaihola

2

¿Qué tipo de archivos binarios? Los binarios deben haber venido de la fuente en algún momento, ¿verdad?

Agregue la fuente que crea esos binarios como un submódulo en git. Luego, en su proceso de compilación, cree esos binarios antes de crear su fuente. El submódulo se mantiene sincronizado con una versión específica de la fuente que usted sabe que funciona. También obtiene el beneficio de poder depurar más fácilmente ya que tiene la fuente.

A menos que los binarios sean imágenes, etc., solo almacénelas.

Si el problema es el espacio, use bitbucket ya que tienen espacio ilimitado.

+0

que tengo por ejemplo una biblioteca de Java (JAR) generados a partir de un proyecto Java. Necesito almacenar esta biblioteca de forma que pueda descargarse para el usuario de la lib sin tener que compilar la lib por sí mismos. También necesito almacenar diferentes versiones del jar (1.3.0, 1.3.1, 1.4.0, etc.) a medida que el desarrollo continúa. –

+1

Para archivos jar, ¿no puedes almacenarlo en nexus y usar maven para descargar dependencias? Esa es la forma estándar de Java. Ver http://stackoverflow.com/questions/3329041/best-practice-to-store-jar-files-in-vcs-svn-git – dalore

+0

Gracias que tiene sentido. Por lo tanto, al menos está claro que es mejor no almacenar jarras y binarios en git, sino usar una solución externa. –

56

el 11 de diciembre de 2012, la Downloads feature on GitHub is deprecated. El artículo Distributing large binaries recomienda el uso de un servicio externo:

Recomendamos Amazon S3 para el almacenamiento emparejado con CloudFront para servir a través de CDN, u otros servicios tales como SourceForge.


Sin embargo, since 2d July 2013, ahora se puede definir un comunicado de .

lanzamientos, un flujo de trabajo para el software a los usuarios finales el envío.
Las versiones son objetos de primera clase con registros de cambios y activos binarios que presentan un historial completo del proyecto más allá de los artefactos de Git. Son accesibles desde la página principal de un repositorio:

homepage

  • lanzamientos se acompañan de notas de la versión y enlaces para descargar el código de software o fuente.
  • Siguiendo las convenciones de muchos proyectos de Git, los lanzamientos están ligados a las etiquetas de Git. Puede usar una etiqueta existente o permitir que las versiones creen la etiqueta cuando se publique.
  • También puede adjuntar recursos binarios (como ejecutables compilados, scripts minificados, documentación) a un lanzamiento. Una vez publicados, los detalles y los activos están disponibles para cualquiera que pueda ver el repositorio.

release

+0

"páginas de github" es público. "liberaciones de Github" requiere una cuenta de github. :-( –

Cuestiones relacionadas