Bâtiment dépendant de projets à l'aide de Jenkins
Permet de dire que j'ai 3 ANT projets, chacun avec sa build.xml script situé dans le dossier de niveau supérieur
proj1
file1.java
proj2
file2.java
proj3
file3.java
J'ai configuré Jenkins pour la construction de ces 3 projets, et elle les fabrique et stocke le résultat dans trois dossiers distincts.
/output/proj1/2012-02-28_20-11-06/proj1/distribution/proj1.jar
/output/proj2/2012-02-28_20-11-08/proj2/distribution/proj2.jar
/output/proj3/2012-02-28_20-11-09/proj3/distribution/proj3.jar
Le script ANT est celui qui met le fichier jar dans le dossier de distribution. Je veux utiliser ces fichiers jar dans un autre projet qui produit un fichier war.
Les fichiers jar sont générés dans chaque projet sont utilisés pour générer un fichier WAR. Est-il possible que je peux configurer Jenkins pour construire proj1, proj2, proj3 puis copiez les fichiers jar à un endroit précis, ce qui permettra de contenir un autre projet ANT qui lorsqu'il est exécuté produira un fichier war? Ou est-ce que avez à être codées avec ANT?
Aussi, est-il possible de configurer jenkins pour faire des extractions multiples avant d'exécuter le script ANT. Je suis en utilisant CVS et voudraient faire 3 extractions de chacun à l'aide d'une autre balise avant de lancer la compilation.
Modifier
J'ai posté la question de la nuit dernière avant d'aller me coucher. La lecture de nouveau aujourd'hui, je pense que c'est pas assez clair, donc je vais clarifier l'exigence de nouveau. J'ai 4 projets qui utilisent ANT que la génération mécanisme et sont tous stockés dans un référentiel CVS. Tous les 4 projets de lors de construit la forme d'un fichier WAR qui est déployé sur un serveur d'application Tomcat.
proj1
- file1.java
- file2.java
proj2
- file3.java
- file4.java
proj3
- file3.java
- file4.java
proj4
- jsp
- home.jsp
- css
- home.css
- WEB-INF
- lib
- classes
- web.xml
Chaque projet (à l'exception de proj4) a un fichier ANT qui construit le projet et produit un fichier JAR qui il les stocke dans un "distribution", dossier dans le dossier racine du projet. Par exemple, après proj1 est construit, il ressemblera à ceci
proj1
- file1.java
- file2.java
- distribution
- classes
- file1.class
- file2.class
- proj1.jar
Proj4 a une dépendance sur proj1, proj2 et proj3 en ce qu'il a d'abord besoin de copier tous les fichiers jar dans son workarea avant il génère un fichier war. Le fichier ANT pour projet4 copie les fichiers JAR de proj1, 2 et 3, et construit une GUERRE des fichiers. L'résultant de la GUERRE de fichier contient la structure suivante
proj4
- jsp
- home.jsp
- css
- home.css
- WEB-INF
- lib
- proj1.jar
- proj2.jar
- proj3.jar
- classes
- web.xml
Maintenant d'automatiser le plus haut, j'ai besoin de quelque sorte configurer Jenkins et ANT pour effectuer les opérations suivantes (dans l'ordre indiqué)
- Checkout proj1 from CVS using RELEASE1.1 tag
- Build proj1
- Checkout proj2 from CVS using RELEASE1.2 tag
- Build proj2
- Checkout proj3 from CVS using RELEASE1.1 tag
- Build proj3
- Checkout proj4 from CVS using RELEASE1.1 tag
- Copy the proj1.jar, proj2.jar, proj3.jar from the previous 3 builds and copy them to the proj4 WEB-INF/lib folder.
- Build proj4
- Deploy the WAR file.
J'ai joué un peu avec Jenkins hier et a réussi à le configurer pour créer chacun des projets, mais chaque fichier jar se termine dans un autre dossier. Comment puis-je configurer Jenkins pour construire les projets que j'ai décrit ci-dessus?
L'environnement a les propriétés suivantes
Build tool - ANT
OS - Solaris
Maven serait probablement travailler avec cela, mais pour le moment il n'y a pas de plans pour introduire Maven. Si il ya un moyen simple de Maven comme outil de construction que je peux utiliser pour enregistrer les bibliothèques, j'ai besoin de ne pas exiger l'accès externe alors s'il vous plaît laissez-moi savoir.
Merci d'avance.
OriginalL'auteur ziggy | 2012-02-28
Vous devez vous connecter pour publier un commentaire.
Utilisation Apache Ivy avec proj1, proj2 et proj3 la publication de leurs fichiers jar à un artefact de référentiel. Vous pouvez ensuite proj4 déclenché, chaque fois que vous publiez une nouvelle version de proj1, proj2 ou proj3 (p. ex., à l'aide de la Jenkins Ivy Plugin). Proj4 utilise à nouveau le Lierre, mais cette fois pour récupérer le proj1, proj2 et proj3 des bocaux de dépendances, qui sont ensuite utilisés pour construire la GUERRE (que vous souhaitez publier sur votre dépôt).
Si vous vous sentez en confiance, vous pouvez également envisager de passer de Fourmi pour Gradle, qui utilise également le Lierre sous les couvertures. Vous pourriez aussi envisager d' Maven, mais je ne suis pas assez familier avec elle à le recommander. J'ai entendu beaucoup de personnes ne jurent que par lui et beaucoup de gens ne jurent.
Voici une semblable question et la réponse
Vous êtes à la publication des bocaux à une commune de l'aire de répartition. Le lierre peut être configuré pour l'utiliser comme un référentiel local. C'est difficile mais en vaut la peine. Enfin ivy a aussi un buildlist tâche qui pourrait déterminer automatiquement votre projet de construction de la commande en cochant les interdépendances déclaré dans votre module ivy fichiers.
est correcte. Si vous ne voulez pas maintenir un référentiel, alors tu peux utiliser le référentiel local. Lors de la publication et de la récupération à partir d'un référentiel local, le Lierre juste stocke les bocaux dans ${user.home}/.ivy2/local (même si elle peut être configuré pour être ailleurs).
OriginalL'auteur Tom Howard