Infrastructure avec maven, Jenkins, Nexus

Nous sommes à l'aide de maven. Je veux mettre en place l'infrastructure, pour que les artefacts construits automatiquement aillent au dépôt Nexus. Et puis ils pourraient être utilisés par les développeurs.

j'ai déjà mis en place Jenkins avec 1 emploi pour notre projet. Et J'ai installé Nexus sur le même serveur.

sur les PC des développeurs, j'ai copié le paramètre maven par défaut pour C:Users{user}.m2paramètres.XML l'ajout de cette section. Références:

configurer Maven pour utiliser un Nexus

Maven De Référence Des Paramètres

<mirror>
  <!--This sends everything else to /public -->
  <id>nexus</id>
  <mirrorOf>*</mirrorOf>
  <url>http://myserver:8081/nexus/content/groups/public</url>
</mirror>

(je viens de suivre gestion du dépôt avec Nexus livre

Quelles sont les prochaines étapes? Devrait Jenkins emploi mvn install? Comment créer un dépôt Nexus pour les artefacts de l'entreprise?

31
demandé sur Paul Verest 2011-08-05 05:01:13

5 réponses

pour déployer des artéfacts à Nexus, vous aurez besoin d'inclure un section de la gestion de la distribution dans votre pom. Les navires Nexus avec des dépôts spécifiques déjà mis en place pour les snapshots et les versions. Vous devez donner le chemin correct à chacun de ceux-ci de sorte que maven déploiera snapshot et libérer des artéfacts pour les bons repos. Ensuite, chaque fois que vous déployez des artefacts -- typiquement avec mvn deploy ou maven version plugin, les objets seront déployés. Nexus a écrire l'authentification par défaut, vous devez assurez-vous d'ajouter un section du serveur avec les bonnes références aux paramètres.xml de la personne qui sera le déploiement d'artefacts. Jenkins peut être traité comme n'importe quel autre utilisateur. Si vous l'avez fais un deploy comme sa construction, alors chaque construction se déploiera à Nexus. Il y a aussi une action de post-construction pour déployer des artefacts au cas où vous voudriez que cela arrive plus tard dans le travail de Jenkins.

16
répondu Ryan Stewart 2011-08-05 01:09:09

Je n'ai pas eu besoin d'apporter des changements à mes projets pom.XML. Au lieu de cela, dans le jenkins "Post-build Actions" j'ai sélectionné "Deploy artifacts to Maven repository" puis sélectionné "Advanced" et défini L'URL du dépôt à http://nexusserver:8081/nexus/content/repositories/releases et le Référentiel ID deploymentRepo.

Dans le ~/.m2/settings.xml sur la machine jenkins j'ai ajouté

<settings>
  <servers>
    <server>
      <id>deploymentRepo</id>
      <username>deployment</username>
      <password>deployment123</password>
    </server>
  </servers>
   ...

</settings>
17
répondu Steve Brown 2013-04-19 00:04:30

mise à jour pom.xml

 <distributionManagement>
    ...
    <repository>
      <id>deploymentRepo</id>
      <name>Internal Releases</name>
      <url>http://nexusserver:8081/nexus/content/repositories/releases</url>
    </repository>
    ...
  </distributionManagement>

puis pour maven ~/.m2/settings.xml ajouter (ceci est l'utilisateur de déploiement par défaut dans Nexus)

<server>
  <id>deploymentRepo</id>
  <username>deployment</username>
  <password>deployment123</password>
 </server>

mvn deploy

il est alors possible d'utiliser des artefacts déployés dans n'importe quel projet, tout comme des artefacts standards. Dans ce cas, ajouter à pom.xml

<!-- company repositories -->
    <repository>
        <id>deploymentRepoReleases</id>
        <name>Releases (Nexus)</name>
        <url>http://nexusserver:8081/nexus/content/repositories/releases/</url>
    </repository>
    <repository>
        <id>deploymentRepoSnapshots</id>
        <name>Snapshots (Nexus)</name>
        <url>http://nexusserver:8081/nexus/content/repositories/snapshots/</url>
    </repository>

mise à jour: plus tard, nous nous sommes éloignés des dépôts de snapshots et avons utilisé maven-release-plugin qui n'ont besoin que de dépôts de type release.

12
répondu Paul Verest 2014-04-03 09:09:45

si C'est une question de Jenkins plutôt qu'une question de Maven, je recommande d'utiliser L'Action de post-construction "Deploy Artifacts to Maven repository" pour la plupart des cas.

avantages à mon avis:

  • plus portable( nous utilisons différents dépôts pour différentes étapes du cycle de vie), et chaque instance de Jenkins sait qu'elle possède son propre dépôt
  • plus évident pour quiconque lisant le travail de Jenkins
  • plus en ligne avec les Jenkins façon de faire les choses
1
répondu Ian Sparkes 2016-02-08 09:46:11

suivant les arguments maven goal pour le maven-release-plugin peut être utilisé pour passer l'authentification du dépôt nexus

-Dusername=<> -Dpassword=<>

utiliser avec jenkins project, maven command line, pour l'authentification nexus repo

1
répondu Amit Kaneria 2016-05-12 20:53:55