web-dev-qa-db-fra.com

Maven release plugin git credentials

Nous utilisons Jenkins et venons de passer d'un dépôt git basé sur des fichiers sans authentification à l'utilisation de GitBlit avec une authentification appropriée sur http.

Le problème est - comment maven est-il censé s'authentifier en mode batch?

Mettre à jour chaque tâche avec -Dusername et -Dpassword (et donc le stockage du mot de passe dans les jobs) ne semble pas très faisable. J'ai lu que settings.xml est censé fonctionner avec git en spécifiant le serveur git comme identifiant, mais quoi que je fasse, cela n'a aucun effet (c'est-à-dire que le plug-in de publication demande des informations d'identification).

pom.xml:

<properties>
   <project.scm.id>git</project.scm.id>
</properties>
<scm>
   <connection>scm:git:http://myserver:8081/r/gitauthtest.git</connection>
   <developerConnection>scm:git:http://myserver:8081/r/gitauthtest.git</developerConnection>
</scm>

contenu settings.xml

<settings>  
   <servers>  
      <server>
         <id>git</id>  
         <username>myUser</username>  
         <password>myPassword</password>  
      </server>   
   </servers>
</settings>

Existe-t-il un moyen de faire fonctionner cela? Je ne peux pas croire qu'une tâche aussi simple et extrêmement courante que celle-ci n'ait pas de solution standard facile.

21
Rasmus Franke

Sur la base des documents , vous devez utiliser une propriété spéciale, project.scm.id, pour définir l'ID de l'entrée de serveur appropriée dans votre fichier settings.xml.

<properties>
  <project.scm.id>my-scm-server</project.scm.id>
</properties>

Et ce qui suit dans votre fichier settings.xml:

<settings>  
   <servers>  
      <server>
         <id>my-scm-server</id>  
         <username>myUser</username>  
         <password>myPassword</password>  
      </server>   
   </servers>
</settings>

BTW: Vérifiez si vous utilisez la version la plus récente de maven-release-plugin . L'amélioration project.scm.id a été introduite dans la version 2.3 dans le cadre du ticket MRELEASE-420 . Par exemple, si vous utilisez Maven 3.0.5, vous n'utilisez par défaut que la version 2.0 du plug-in maven-release. Beaucoup trop vieux. Corrigez en ajoutant quelque chose comme ci-dessous à votre POM:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.Apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>                
            </plugin>
        </plugins>
    </pluginManagement>
</build>
35
khmarbaise