L'incrémentation de Projet Maven Version avec Jenkins/Git
Je suis en utilisant Jenkins, Maven pour construire des projets Java et de les déployer sur un Nexus référentiel. J'ai aussi l'utilisation de Git, même si je suis plus habitué à la Subversion donc mon Git connaissance est limitée.
J'aimerais Jenkins/Maven:
- Fonctionnalité de fusion de la branche en direction de l'intégration
- Construire fusionné code, exécuter des tests unitaires
- Si ils passent, par incrément de Maven numéro de version
- Pousser code fusionnées à l'origine de la direction de l'intégration
- Déployer artefact Nexus référentiel
Je rassemble le Git fusion peut être réalisée ainsi: http://twasink.net/2011/09/20/git-feature-branches-and-jenkins-or-how-i-learned-to-stop-worrying-about-broken-builds/
J'ai aussi beaucoup lu sur le maven-release-plugin
.
Je ne suis pas sûr de savoir comment exactement pour atteindre les résultats ci-dessus. Si j'ai coder en dur SCM de détails dans chaque POM du projet, alors pourquoi ne pas la maven-release-plugin
agir uniquement sur que référentiel plutôt que Jenkins local?
Si j'utilise une solution d'avoir Jenkins passer une variable d'environnement à Maven pour spécifier le numéro de version, alors je vais attendre d'avoir la version locale de résolution de problèmes dans mon IDE.
- Voir maven version du plugin
mvn versions:use-next-releases
oumvn versions:set -DnewVersion=x.y.z
- Salut, j'ai essayé mvn versions:set-DnewVersion=x.y.z, mais lorsque l'artefact qui est déployé pour Nexus semble encore avoir l'ancienne version numéro de série, même si je peux voir dans les journaux que la variable a été transmis par le biais de Maven.
- Vous avez le droit, parce que vous poussez les sources d'origine (avant la compilation). Vous devez pousser les sources de jenkins de l'espace de travail ...
Vous devez vous connecter pour publier un commentaire.
OK, ce un de très difficile à faire. Mais c'est faisable. Laissez-moi vous expliquer l'idée, étape par étape.
Nous avons d'abord besoin de fusionner les deux branches de l'ensemble. C'est assez facile à faire avec Jenkins, Git plugin, comme il a cette fonctionnalité intégrée dans: de Fusion avant de construire option est disponible dans Avancé section de configuration du projet.
Nous avons donc obtenu le code fusionné entre ces deux branches, nous pouvons nous déplacer pour la construction du projet comme à l'habitude, Maven style Jenkins projet.
Maintenant, nous avons besoin d'incrémenter la version du projet et de ses modules, s'engager dans la fusion de la branche et de pousser les objets du référentiel. Et ici, nous avons deux options pour aller avec:
-DconnectionUrl=
. Et si aucun n'est fourni, il vérifiera la libération.fichier de propriétés pour l'obtenir à partir de là. Dernière réserve est d'aller à la pom.xml ang obtenir${project.scm.connection}
variable. Donc, vous pouvez facilement utiliser le plugin pour faire tout le sale travail sans tracas et introduire cette propriété à l'aide de différentes techniques fournis par Jenkins.Dans les deux cas, vous pouvez utiliser le Post Étapes avec Exécuter uniquement si l'génération réussit option et invoquer le haut-niveau Maven cible comme d'habitude. Pour tous les paramètres mentionnés ci-dessus décrits par le plugin en particulier, il existe une option pour fournir facilement dans un champ de texte.
Pour le téléchargement de vos objets à la Nexus repo je voudrais aller avec Jenkins construire en fonction de Déployer des artefacts à repository Maven, qui est disponible au sein de votre configuration d'un projet. Cela vous demandera de fournir un référentiel de configuration dans le POM définition, ou en tant que bien.
Espoir qui couvre toutes les questions que vous avez. Si vous avez besoin de moi pour être plus précis dans toute la gamme de la réponse, n'hésitez pas à demander.