¿De qué manera el desarrollo/ramificación paralelos en su VCS afecta la configuración de su repositorio de artefactos de construcción y las liberaciones al control de calidad?Ramales de desarrollo paralelo, depósitos de artefactos de compilación y versiones de control de calidad
En nuestra empresa delegamos nuestro VCS para esfuerzos de desarrollo paralelo y, a menudo, no tenemos mucho aviso de qué filial enviará en qué orden.
Para la numeración de la versión, me gustaría colocar un identificador de rama para mostrar el control de calidad de la ramificación de la construcción. Cualquier construye a partir del tronco tendría un número 'normal' versión sin identificador de rama en ella:
trunk: 1.1.0
branch: 1.1.0.MyBranch
branch: 1.1.0.AnotherBranch
Originalmente pensado para tener un artefacto depósito de acumulación por sucursal, y un repositorio principal para el tronco.
Pero si mi número de versión incluye la rama, entonces el número de versión será incorrecto para el producto (si estoy compilando y soltando desde la rama).
¿Es la forma de evitar esto solo desde el maletero?
Además, ¿en qué punto debo comenzar a enviar las compilaciones del equipo de QA desde el troncal en lugar de construir desde la sucursal?
Mi idea actual es convencer a la administración de que asigne un equipo de desarrollo a una orden de lanzamiento (digamos una semana de la versión) y combine su rama con la troncal. Entonces QA comienza a obtener compilaciones de troncales en lugar de compilaciones de ramificaciones, y el equipo de desarrollo cuya rama ha sido fusionada corrige cualquier error directamente en el tronco y no en la ramificación.
* ACTUALIZACIÓN *
Más específicamente, estoy usando SVN para VCS, y Artifactory para mi repositorio. Estoy usando Ivy para la gestión de la dependencia.
En cuanto a la ayuda Artifactory el repositorio Presentaciones (Repository Layouts):
"a sequence of literals that identifies the base revision part of the artifact
version, excluding any integration information"
"'1.5.10', or in case of an integration revision '1.2-SNAPSHOT' the base revision
is '1.2'"
Esto y los diseños predeterminados para Maven e Ivy sugieren a mí que esto es más común:
MyRepo
MyLib
1.1.0 (this is the dll from trunk)
-MyLib.dll
1.1.0.MyBranch-SNAPSHOT (dev builds from the "MyBranch" branch)
-MyLib.dll
1.1.0.AnotherBranch-SNAPSHOT (dev builds from the "AnotherBranch" branch)
-MyLib.dll
¿Este el diseño típico de repo para usar Ivy? ¿Asumiría que esto requeriría usar la función de rama de Ivy para resolver las dependencias en el momento de compilación a la carpeta de la rama correcta en el repositorio?
* ACTUALIZACIÓN 2 *
Aquí está mi estructura Artifactory actual:
MySnapshotRepo
CompanyName
CompanyName.MyLib
1.0-SNAPSHOT
MyLib.dll (snapshot builds from the dev branch)
MyReleaseRepo
CompanyName
CompanyName.MyLib
1.0.0
MyLib.dll (release builds from the trunk)
1.0.1
MyLib.dll (release builds from the trunk)
1.0.2
MyLib.dll (release builds from the trunk)
- ¿Cómo punto de la hiedra en una cesión temporal específica en tiempo de compilación? Para un lanzamiento, necesito solo sacar los binarios del repositorio de lanzamiento. Para una compilación de instantáneas, puedo extraer los archivos binarios si aparecen en el repositorio de instantáneas; si faltan, puedo sacarlos del repositorio de versiones. Entiendo cómo encadenar repositorios, simplemente no entiendo cómo cambiarlos.
En mi IvySettings.archivo xml que tengo:
<settings defaultResolver="defaultresolvechain"/>
..pero no quiero un valor predeterminado. Me gustaría especificar a qué cadena de resolución resolver cuando llamo al comando Ivy resolve. Algo como esto:
<ivy:resolve transitive="false" resolveMode="snapshot-resolve" conf="compile,test"/>
¿Es esta la manera incorrecta de cambiar los repos que necesito resolver?
La tarea de publicación tiene un atributo "resolver" que funciona perfectamente para mí de manera similar.
Además, en mi ejemplo particular, puedo tener varias ramas de SVN correspondientes a múltiples repositorios de instantáneas de Artifactory. ¿Puedo parametrizar la forma en que resuelvo a qué repos? ¿O es la forma más correcta de colocar instantáneas de todas las ramas en un repositorio, y usar la función de rama Ivy?
Háganme saber si necesita cualquier otra información para ayudar.