Recientemente, un complemento m2release llamó mi atención. Parecía agradable. Aunque, me hubiera gustado que mi proceso de lanzamiento fuera completamente «pom-tweak-free». Lo que quiero decir con esto es que tenemos para proporcionar 4 parámetro de entrada para procesar una liberación completa: (Ex. 1.0.0)
- la versión de lanzamiento
- la nueva versión de desarrollo (ex 1.0.1-. INSTANTÁNEA) etiqueta
- la liberación en SCM (ex. liberar-1.0.0 o 1.0.0)
- la ruta de la base de etiqueta en SCM
el primero 2 tienen valores predeterminados aceptables. La versión toparse con el dígito de la versión de corrección de errores está perfectamente bien para mí.
El número 4 se puede especificar en el pomo. No cambiará
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>https://example.com/svn/myProject/releases</tagBase>
</configuration>
</plugin>
Es el tercero que me impide una automatización completa de una versión con solo presionar un botón. La etiqueta de la liberación por defecto no lo hará por nosotros lo que tenemos que especificar que:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tag>release-${pom.version}</tag>
<tagBase>https://example.com/svn/myProject/releases</tagBase>
</configuration>
</plugin>
Ahora, si bien esto podría ser justo lo que necesitaba, me acaban de tener una etiqueta con el SVN en el -SNAPSHOT fin. :(Así que tengo que pasar el parámetro de etiqueta en la configuración de trabajo de Hudson. Además, tengo que cambiarlo para cada versión que hagamos ... que no es exactamente lo que necesito.
Así que, al final, tener un proyecto de tipo maven2 en Hudson + el plugin m2release Hudson + la liberación experta en el plugin configurado correctamente es la madre de todo el proceso de liberación que he visto hasta ahora. Si bien no es perfecto, me ahorró mucho trabajo tiedous.
JS.
Lamentablemente, creo que las versiones manuales son una solución que sería técnicamente aceptable pero políticamente inaceptable. Mencionaré que una persona senior en Sonatype _personally_ sugirió que hagamos nuestras publicaciones a mano. – sal
La alternativa es que usted haga la publicación: prepare el objetivo a mano, o al menos la versión: prepare -Dryrrun = true hasta que esté lo suficientemente seguro de que todos los criterios están completos, entonces podría iniciar su proceso de compilación y estar razonablemente seguro va a funcionar. –
Me gusta mucho esa idea. Tener lanzamiento: prepare -Ddryrun = verdadero ejecutado primero debería evitar la mayoría de los problemas que podríamos tener. – sal