Complemento de Hudson Perforce: ¿cómo puedo actualizar automáticamente las versiones sin activar una compilation repetidamente?

Estoy tratando de lograr una continuous integration trabajando con Hudson, Maven y Perforce (con una encuesta scm utilizada para activar cada compilation)

Uno de los requisitos es actualizar automáticamente los numbers de versión de instantáneas POM después de cada compilation exitosa.

Esto es trivial utilizando el complemento de lanzamiento de Maven, pero el acto de verificar los POM recién versionados desencadena otra compilation, que continúa hasta el infinito.

¿Hay alguna manera de verificar las actualizaciones de la versión sin activar otra compilation? No parece haber ninguna forma de excluir loggings de usuarios específicos, lists de cambios específicas o files específicos cuando la encuesta de scm toma la decisión de rebuild.

Esto parece ser un requisito básico: lo he estado haciendo durante años usando Cruise Control / Ant / Perforce,

Aclamaciones,

marca

He estado pensando en mudarme a Hudson, pero la imposibilidad de excluir files específicos de la encuesta scm sería un factor decisivo. ¿También hizo esta pregunta en la list de correo de Hudson?

usuarios <at> hudson <dot> dev <dot> java <dot> net

La única solución que veo al leer los documentos parece ser que desencadena comstackciones basadas en activadores p4, donde puede hacer lo que desee programáticamente, pero no parece ser un enfoque muy simple.

No creo que haya ninguna forma de configurar Hudson para omitir parte de un espacio de trabajo de Perforce al sondeo. Puede tener más suerte configurando dos espacios de trabajo diferentes: uno para la testing de compilation usando un POM pnetworkingeterminado y otro para sus lanzamientos con el POM de lanzamiento actualizado automáticamente. Los dos espacios de trabajo podrían diferir solo en este file y modificar el lanzamiento POM no desencadenaría una nueva compilation.

Consulte cómo hacer la asignación de files individuales en un espacio de trabajo en la P4Guide .

Es posible actualizar la descripción de una list de cambios después de que se haya enviado, por lo que si comstack con un determinado número de list de cambios, puede actualizar la descripción de esa list de cambios para include su número de compilation. Esto no debería desencadenar una nueva construcción.

¿Qué es "POM"?

Puede hacer que Hudson "Cree o actualice tags en Perforce" (consulte la parte inferior de la configuration de su proyecto). Puede usar eso junto con la variable de entorno BUILD_NUMBER que proporciona Hudson, que le proporciona numbers de construcción únicos y tags P4 estampadas de dicha compilation.

Tengo todo el labeldo, las actualizaciones ChangeLog y el empaquetado hecho por nuestro código de compilation registrado. Esto nos permite:

  • Crea RC y las tags apropiadas sin iniciar la creación de anteras
  • Nos permite depurar todos los aspectos de nuestra compilation en cualquier máquina de desarrollo, no solo aquellos con Hudson.
  • Nos permite recrear exactamente cómo se hizo un package, label, etc. en cualquier punto del pasado.

Tuve un problema similar al verificar en compiled src. Pude encontrar una alternativa pero consideré lo siguiente.

  1. En hudson, especifique una carpeta secundaria de su proyecto para sondear. Es decir, en realidad, no he comprobado Hudson su proyecto, solo una carpeta incidental.

  2. Agregue un script de shell para verificar su proyecto propiamente dicho.

  3. Ejecuta scripts normales.
  4. revisa tu pom. El truco aquí es que la carpeta que se está encuestando no habrá cambiado en este momento.

No es ideal, pero funciona.

El plugin forzado ha tenido máscaras de sondeo desde hace un time. Está en la sección avanzada en "Ver máscara".

Básicamente, enumera un subset de files que desea que el sondeo compruebe los cambios. Lamentablemente, no hay una forma fácil de excluir files, por lo que deberá crear una list de especificaciones de files que especifiquen todo, PERO el file que desea excluir. Entonces, si la versión está contenida en un pom.xml, necesitaría especificar los files y directorys que no la contienen.

Por ejemplo, si su estructura de directorys se veía así:

 ./pom.xml ./lib/ ./src/ 

Usted especificaría,

 //depot/project/lib/... //depot/project/src/... 

como la máscara de vista, y marque la checkbox para usarla solo para el sondeo. Existen algunas limitaciones con esta function, como no poder usar '-' para excluir las especificaciones de file, pero por ahora sigue siendo una solución viable.