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?
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.
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>
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.
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
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