Imaginez un projet Java construit à l'aide de Maven pour lequel j'ai:
Cela ressemble à un scénario typique. Actuellement, je cours: p>
Il existe deux travaux CI configurés, les deux pointant vers la branche VCS du projet: P>
Le problème est que le travail 2 Unité teste et construit l'artefact-sous-test de nouveau (car la phase de vérification invoque automatiquement la phase d'emballage). Cela n'est pas souhaitable pour plusieurs raisons (en importance décroissante): p>
Donc, ma question est, comment puis-je configurer le travail 2 pour utiliser l'artefact créé par le travail 1? p>
Je me rendais compte que je pouvais juste avoir un travail CI qui fonctionne "MVN Vérifier ", qui créerait l'artefact une seule fois, mais je souhaite avoir les travaux de CI séparés décrits ci-dessus afin de mettre en œuvre un pipeline de déploiement de style farley. em> p> au cas où il aide n'importe qui, voici le complète maven 2 pom de "projet 2" dans la réponse acceptée: p> Notez que même si ce projet "Tests" ne crée pas d'artefact, Il doit utiliser une sorte d'emballage (j'ai utilisé "JAR" ici), sinon aucun test n'est exécuté dans la phase de vérification. p> p>
5 Réponses :
Donc, ma question est, comment puis-je configurer Job 2 pour utiliser l'artefact créé par Job 1? P> blockQuote>
vous ne pouvez pas. p>
Vous n'avez pas besoin de. Le Maven Cuild Cuildecycle est configuré d'une manière qui sonne Comme si cela répondra à vos besoins. Le cycle de vie des tests ne fonctionnera que les junits rapides. Package Créez votre état de fin sans exécuter la vérification. P>
Vous n'avez besoin que d'un emploi CI. Lorsque le CI exécute votre cycle de vie du déploiement / installation Maven, si les junits échouent à la construction échoue, les scripts de vérification n'exécuteront pas. P>
Ce que vous dites est vrai, mais ne répond pas à mon exigence (certes incontestée) qu'il y ait deux emplois CI distincts, car je construisais un pipeline de déploiement et que je dois avoir une visibilité dans laquelle les révisions ont adopté la phase de validation et qui ont également adopté l'acceptation automatisée. organiser. J'ai clarifié la question.
Essayez deux projets maven. Le premier contient les tests de construction et d'unité. Vous installez les artefacts dans votre référentiel local. Le deuxième emploi exécute le deuxième projet Maven qui déclare les artefacts du premier projet en tant que dépendances et exécute les tests fonctionnels. P>
Vous ne savez pas si le scénario que je viens de décrire est possible, mais je pense que c'est. P>
Pour une amélioration rapide, vous pouvez contourner le test de l'unité avec Vous pouvez également vérifier dans le plugin SCM de l'espace de travail Clone. Cela pourrait vous proposer des options supplémentaires. P> -dmaven.test.skip = true code>. Si vous transmettez le numéro de révision de votre code dans votre SCM au deuxième travail, vous devriez être en mesure de vérifier le même code source. P>
J'aime l'idée "Deux projets mavenaires"; Je vais lui donner un tourbillon. Cela ressemble à quelque chose de John Smart recommandé dans un diaporama sur CI d'environ il y a environ deux ans, mais je n'étais pas sûr des détails ou si cela était toujours considéré comme une meilleure pratique.
Cela a fonctionné bien; J'ai ajouté le POM du deuxième projet à la question, pour que quiconque souhaite l'essayer.
Vous pouvez définir un profil maven qui sera utilisé pour n'exécuter que les tests d'intégration. Je fais ça beaucoup.
quelque chose comme ceci: p> vous invoqueriez avec: p> malheureusement Le plug-in de guerre ne peut pas être ignoré, mais vous pouvez envoyer sa sortie à quelque part sur le chemin (j'ai utilisé / TMP). Si vous voulez vraiment sauver des millisecondes, vous pouvez également le faire ignorer les ressources Web (sauf web.xml, cela ne fonctionnera pas sans cela). P> Vous pouvez également utiliser le profil pour ignorer tous les autres plugins. que vous pouvez courir, par exemple le plugin d'assemblage, la coobertura, le PMD, etc. p> p>
Profil Maven qui n'exécute que les tests d'intégration ( comme suggéré ici ) n'est pas suffisant. Vous devez également vous assurer que la configuration de Maven-compiler-plugin fort> a utilité d'utilisation = false forte>. Exécution du profil de cette façon, ne sera pas automatiquement compilé, par exemple:
Je sais que cela fait longtemps, mais cela est bien indexé et aucune des réponses ne fait ce qui a été posée, mais j'ai trouvé quelque chose qui fonctionne: Ceci exécute directement les tests directement. , sans passer à travers toutes les étapes intermédiaires de la construction du projet. Vous voudrez peut-être ajouter FAilsafe: vérifiez code> après elle. P> p>
Juste au profit de ceux qui souhaitent mieux comprendre l'approche, voir la livraison continue de Jez Humble et David Farley.
Exactement le livre qui a motivé cet effort! Vaut bien le prix.