Versionamiento (Ciclo)
Los lineamientos de versionamiento, se deberán de utilizar en momentos diferentes; dependiendo del tipo de proyecto, tamaño del equipo y el plan de iteración. De manera general, se identifican dos grandes fases que gobiernan a cualquier tipo de proyecto: fase de inicio y fase de desarrollo.
Fase de Inicio
1. inicialización
crearRama('from=empty', 'master')
individual
clonar(master)
version('0.0.1-SNAPSHOT', pom.xml )-commit-publish
2. flujo increment (arquitectura):
[update-]develop-commit[-publish]
3. flujo release (release-arquitectura):
3.1 Inicialización
create('branch', 'release-arquitectura')
version('0.0.z-RC')-commit[-publish]
build('0.0.z-RC+dev#hash')
build('0.0.z-RC+qa#hash')
build('0.0.z-RC+prod#hash')
3.1 SubFlujo Pruebas (release-arquitectura) :
foreach(enviroment = {'qa'})
until enviroment is stable:
test-report-solve-version('0.0.(z+1)-RC', pom.xml)-commit-publish]
build('0.0.z-RC+enviroment #hash')
3.2 SubFlujo Pruebas Finalización (release-arquitectura) :
version('0.0.z-RELEASE', pom.xml)-commit[-publish]
merge('release-arquitectura', 'master')-tag('0.0.z')
3.3. Publicación
build('0.0.z-RELEASE+dev#hash')-publish(dev)
build('0.0.z-RELEASE+qa#hash')-publish(qa)
build('0.0.z-RELEASE+prod#hash')-publish(prod)
crearRama('from=master', 'develop')
version('0.0.z-SNAPSHOT', pom.xml)-commit[-publish]
publish('develop')
4. Terminación
individual
usarRama('develop')
Fase de Desarrollo
1. Inicialización
crearRama(from='develop', 'feature-[nombre]')
version('0.(y+1).0-SNAPSHOT', pom.xml )-commit-publish
individual
clonar('feature-[nombre]')
2. Flujo increment (feature-[nombre]):
<ciclo>[update-]develop-commit[-publish]
3. Flujo Release (release-[nombre]):
3.1 Inicialización
merge('feature-[nombre]', 'develop')-publish
crearRama('from=develop', 'release-[nombre]')
version('0.y.0-RC')-commit[-publish]
build('0.y.0-RC+dev#hash')
build('0.y.0-RC+qa#hash')
build('0.y.0-RC+prod#hash')
3.2 SubFlujo Pruebas (release-[nombre]) :
<ciclo> test-report-solve-version('0.y.(z+1)-RC', pom.xml)-commit-publish]
3.3 SubFlujo Pruebas Finalización (release-[nombre]) :
version('0.y.z-RELEASE', pom.xml)-commit[-publish]
merge('release-[nombre]', 'master')-tag('0.y.z')
3.4 Publicar
merge('release-[nombre]', 'develop')-publish
build('0.y.z-RELEASE+dev#hash')-publish(dev)
build('0.y.z-RELEASE+qa#hash')-publish(qa)
build('0.y.z-RELEASE+prod#hash')-publish(prod)
eliminarRama('release-[nombre]')
preparar el siguiente incremento
version('0.y.z-SNAPSHOT', pom.xml)-commit[-publish]
publish('develop')
4. Terminación
individual
usarRama('develop')