Mi equipo está utilizando ramas de características para implementar nuevas características y despliega continuamente compilaciones de instantáneas en un repositorio remoto para que los usen nuestros usuarios. Por lo tanto, 'implementar' realmente solo significa 'distribuir a un repositorio remoto de Maven'. Actualmente solo estamos ejecutando compilaciones de integración continua para la rama principal y no las ramas de características por el siguiente motivo: estamos utilizando Maven para construir nuestros proyectos y distribuir JavaDoc y las fuentes junto con el JAR.¿Cómo construir e implementar continuamente ramas de características con Maven?
Mi plan era ahora añadir un clasificador para cada característica ramas se acumulan y se espera que uno que se utilizará al crear e implementar los artefactos de este tipo:
- Rama: amo
- clasificador: ninguno
Artefactos:
foo-${version}
.jar,foo-${version}-sources
.jar,foo-${version}-javadoc.jar
Rama: función X-
- clasificador: myfeature
- Artefactos:
foo-${version}-feature.jar
,foo-${version}-sources-feature.jar
,foo-${version}-javadoc-feature.jar
Realmente no importa la denominación exacta del artefacto, que sólo necesitan principales, origen y JavaDoc artefactos separados para la rama de la característica . Resulta que ni el complemento JavaDoc ni el complemento fuente consideran que el clasificador está configurado y, por lo tanto, sobrescriben los artefactos creados para mi compilación maestra.
Realmente no quiero cambiar el artefacto, aunque esto probablemente resolvería el problema. ¿Cómo se aproxima a las ramas de características y la integración continua con Maven?
¿Cuán estáticas son sus ramas de topoc? ¿Con qué frecuencia espera configurar un nuevo trabajo y con qué frecuencia van a ser derribados? ¿Qué usas en el servidor CI para ayudarte con eso? Esta es una de las cosas que me impide pensar en una construcción así. Tal vez un modelo de gatekeeper o servidor de CI local desarrollador sea más adecuado. – eckes
no debe usar el clasificador para reflejar la diferencia en las ramas, ya que tendrá efectos secundarios desagradables con algunos otros complementos. Se supone que los clasificadores son fuentes, javadocs, etc ... Para su necesidad, debe cambiar el artifactId o la versión. – Farid
@eckes: utilizamos Bamboo, que admite el inicio automático de un trabajo de compilación contra una rama diferente en función de una expresión regular en el nombre de la rama. Tan pronto como detecte una rama que coincida con esa expresión, prácticamente clonará un trabajo de compilación si generalmente se le indica que lo haga. –