¿Cómo utilizo con éxito el complemento de lanzamiento de Maven con GitHub (o la empresa GitHub) cuando uso una herramienta de CI como Hudson / Jenkins?

¿Cómo utilizo con éxito el complemento de lanzamiento de Maven con GitHub (o la empresa GitHub) cuando uso una herramienta de CI como Hudson / Jenkins?

Los problemas encontrados son

  • Maven no confirma si el pom.xml está en una subcarpeta en lugar de en el nivel superior. Debido a esto, las comstackciones subsiguientes fallan y el nombre de la label ya existe.
  • A pesar de configurar la authentication de key pública entre el server de origen que ejecuta el trabajo de CI, git push falla con uno de los siguientes errores
    • la authentication de key pública falló
    • git de service desconocido

Hay varias cosas que deben ser correctas para que esto funcione.

  1. Para la confirmación de la subcarpeta de pom.xml para que funcione, el error se resuelve en el complemento de versión de Maven 2.5.1. Obtenga lo último con las dependencies. La siguiente sección muestra el pom.xml

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.1</version> <dependencies> <dependency> <groupId>org.apache.maven.scm</groupId> <artifactId>maven-scm-provider-gitexe</artifactId> <version>1.9.2</version> </dependency> </dependencies> <configuration> <checkModificationExcludes> <checkModificationExclude>pom.xml</checkModificationExclude> </checkModificationExcludes> </configuration> </plugin> 
  2. Configure correctamente la sección SCM en pom.xml. Para que la authentication de key pública funcione, use el protocolo SSH. Para el protocolo https, se necesitará usuario / contraseña, esta respuesta no cubre eso. Debería ser posible al proporcionar user / pwd en Maven settings.xml en la sección de serveres.

     <scm> <developerConnection>scm:git:ssh://github.com/org/repo.git</developerConnection> <url>https://github.com/org/repo</url> <tag>HEAD</tag> </scm> 
  3. Crea un usuario llamado git en tu server de origen. Si se ejecuta como cualquier otro usuario, la url de developerConnection necesitará tener git@github.com en lugar de github.com. Maven intentará poner un git: ****** en el command git push y falla como service desconocido. Si usa cualquier otro usuario para SSH en github, lo rechazará con la authentication de key pública fallida.

  4. Usando el git como usuario, genere keys SSH y configure siguiendo los pasos simples a continuación

    https://help.github.com/articles/generating-ssh-keys/

  5. Edite su trabajo en Hudson / Jenkins de la siguiente manera

    • Debajo de la sección de administración del código fuente, ingrese la URL del repository git. Es posible que deba poner git como protocolo, ya que algunas instalaciones de CI no son compatibles con https.
    • Mencione su twig en las twigs para build (por ejemplo, desarrollo)
    • Haga clic en Avanzado y ponga el mismo nombre de sucursal en la sección "Pagar / fusionar a la sucursal local (opcional)"

Ejecute su trabajo con los objectives de maven clean compile release: prepare y release: perform. Deberia de funcionar.