¿Cómo mantiene los binarios publicados bajo control de versiones? Esto permite rastrear qué cosas se cambian entre cada lanzamiento. Me refiero a separar los binarios publicados del repositorio de origen. Los binarios lanzados se crean a partir del software de integración continua o se compilan manualmente.
version-control
release-management
linquizar
fuente
fuente
Respuestas:
Dos opciones:
a) No lo hagas. Solo asegúrese de tener compilaciones deterministas reproducibles, es decir, construir la misma revisión de control de origen con la misma configuración siempre produce exactamente el mismo binario.
b) Designe un directorio en algún lugar como la fuente autorizada para las compilaciones publicadas. Haga que la carga de los archivos binarios sea parte del procedimiento de implementación / envío y asegúrese de que el directorio de compilación publicado esté cubierto por su plan de copia de seguridad. No necesita ningún control de versión aquí; las compilaciones son de escritura única, si necesita cambiar algo, crea una nueva compilación.
De cualquier manera, los binarios y otros resultados de compilación no pertenecen al control de origen, por numerosas razones.
fuente
Utilice un repositorio de artefactos para binarios, no un sistema de control de versiones. No se supone que una versión específica de un binario lanzado cambie con el tiempo, por lo tanto, el control de la versión no tiene sentido ya que los archivos no cambiarían.
Vea, por ejemplo, los repositorios de Maven como un repositorio para archivar / publicar / ofrecer versiones y otros binarios (por ejemplo, documentación)
fuente
Simplemente colóquelos. No hay problema con eso, a menos que esté usando git (que no combina bien los binarios, por lo que tendrá que administrarlos usted mismo) o los está cometiendo demasiadas veces (solo se compromete cuando es listo para enviar, no cada vez que lo construyes).
La mayoría de los binarios delta SCMs bastante bien, solíamos poner un dll de recursos de 2Mb en nuestro SVN y cada vez delta a unos pocos kb.
Escucho muchos argumentos de que los SCM son para la fuente, no para los binarios, pero esto es simplemente falso cuando se considera que la mayoría del software consiste en imágenes, incluso si son solo archivos de iconos. Son binarios, pero son parte de la fuente, así que póngalos y no sea tan dogmático al respecto. También escuché que puedes reconstruir el binario cuando sea necesario, a menudo este es el caso, pero puede ser un gran esfuerzo para perder tiempo para sistemas más antiguos que ya no son compatibles. Si tiene que volver a crear un sistema con solo service packs o parches más antiguos para que se corresponda con el sistema que se utilizó para construir un binario hace 3 años, se alegrará de haber agregado el bin a su SCM en ese momento.
El único momento en que debe preocuparse por agregar compilaciones a su SCM es si lo hace automáticamente como parte del proceso del servidor de compilación; no haga esto. Completará su SCM con compilaciones que no tienen ningún beneficio para usted. En cambio, solo agrégalos cuando se publiquen. De esta manera, usted sabe exactamente qué tiene su cliente y puede reproducir cualquier problema informado por el cliente con los archivos binarios que está utilizando, y no los que ha reconstruido (utilizando, digamos, las últimas actualizaciones del compilador o el sistema operativo).
fuente
No mantengo los binarios de lanzamiento bajo control de versiones. En cambio, los publico en una ubicación bien definida para que otras herramientas los inspeccionen y los usen. Hago mucho trabajo en Java, lo que significa que publico Jars en repositorios locales de Maven. Sin embargo, no uso estas herramientas para rastrear lo que ha cambiado por lanzamiento. Después de todo, son binarios y realmente no hay mucho que rastrear aparte del conteo de archivos.
Para realizar un seguimiento de los cambios entre lanzamientos, etiquetaría o etiquetaría lanzamientos en mi sistema de control de versiones con el número de versión del lanzamiento. Pero esto es solo para rastrear los archivos fuente, no los binarios. Los binarios son artefactos de la compilación y no necesitan estar bajo control de versión.
fuente
La mejor solución es hacer un uso exclusivo de su sistema CI para todas las compilaciones organizativamente significativas (lanzamientos, lanzamientos de candidatos, etc.).
Esto vincula sistemáticamente los binarios liberados al contenido del repositorio sin tener que almacenar realmente los binarios en el repositorio.
Por ejemplo, si está utilizando SVN, use el esquema organizativo de rama principal; realice todo el desarrollo diario en / trunk y cree una etiqueta / para cada versión una vez que esté lista.
Configure su sistema CI para construir desde etiquetas y desde troncal, y haga que escriba la salida en un directorio de red cuya estructura refleje la estructura de nivel superior del repositorio:
El sistema de compilación deberá tratar el directorio / builds / trunk / como un búfer circular, almacenando las últimas n compilaciones, eliminando las compilaciones antiguas a medida que avanza.
El directorio / builds / tags / , por otro lado, es una tienda permanente. Los artefactos de compilación se almacenan en directorios con nombres generados de acuerdo con el siguiente esquema:
donde [rev] es el ID de revisión SVN, [fecha] es la fecha en formato AAAAMMDD y [build_id] es un contador único de 3 dígitos, que se incrementa desde la primera compilación en adelante, haciendo que cada directorio de compilación sea único.
El proceso detallado anteriormente le brinda los siguientes beneficios:
Los artefactos de construcción están vinculados sistemáticamente a la fuente que los generó, por lo que puede encontrar la fuente de un artefacto de construcción particular muy fácilmente (y viceversa).
Esto forma la base para una mayor automatización de versiones. Por ejemplo, generación automática de documentos de liberación, etc.
fuente