Archiver les artefacts dans Jenkins

Quelqu'un Pourrait-il m'expliquer l'idée de artefacts dans le processus de construction?

J'ai le répertoire de l'espace de travail où je vérifie le code pour compiler et exécuter mes scripts ant, etc. À la fin, dans mon cas, je reçois un fichier jar prêt à être installé. Est considéré pour être l'artefact?

Où dois-je dire à mon script de construction de mettre le fichier jar? Dans le répertoire d'espace de travail? Mon fichier jar obtient un nom de fichier unique en fonction de variables comme BUILD_ID et tel, Comment puis-je dites à Jenkins quel fichier jar choisir?

Modifier: OK, alors j'ai essayé de faire quelque chose comme ceci:

entrez la description de l'image ici

Le chemin n'existe pas encore dans mon espace de travail, car le script de construction est censé le créer, et bien sûr, les fichiers .jar et .properties ne sont pas là car ils n'ont pas encore été générés. Pourquoi cela me donne-t-il une erreur alors? Me semble que je suis en manque de quelque chose.

Aussi, Jenkins supprime-t-il les artefacts après chaque build (pas les artefacts archivés, je sais que je peux dire de supprimer ces)? Sinon, il va obstruer le disque dur assez rapidement.

113
demandé sur Michael 2011-04-28 19:59:59

4 réponses

Votre compréhension est correcte, un artefact au sens de Jenkins est le résultat d'une construction - la sortie prévue du processus de construction.

Une convention commune est de mettre le résultat d'une construction dans un build, target ou bin répertoire.

L'archiveur Jenkins peut utiliser globs (target/*.jar) pour récupérer facilement le bon fichier même si vous avez un nom unique par build.

59
répondu Anders Lindahl 2011-04-28 16:24:39

Un artefact peut être n'importe quel résultat de votre processus de construction. L'important est que peu importe sur quel client il a été construit, il sera transféré de l'espace de travail au maître (serveur) et stocké là-bas avec un lien vers la construction. L'avantage est qu'il est versionisé de cette façon, vous n'avez qu'à configurer la sauvegarde sur votre maître et que tous les artefacts sont accessibles via l'interface web même si tous les clients de construction sont hors ligne.

, Il est possible de définir une expression régulière comme le nom d'artefact. Dans mon cas, j'ai compressé tous les fichiers que je voulais stocker dans un fichier avec un nom constant pendant la construction.

9
répondu Matthias Alleweldt 2011-04-28 16:14:20

Aussi, Jenkins supprime-t-il les artefacts après chaque build ? (pas les artefacts archivés, je sais que je peux lui dire de les supprimer)

Non, Hudson/Jenkins n'efface pas, en soi, l'espace de travail après une construction. Vous pouvez avoir des actions dans votre processus de construction qui effacent, écrasent ou déplacent des artefacts de construction à partir de l'endroit où vous les avez laissés. Il existe une option dans la configuration du travail, dans les Options de projet avancées (qui doivent être développées), appelée "nettoyer l'espace de travail avant la construction" qui essuyez l'espace de travail au début d'une nouvelle construction.

7
répondu Codex24 2015-01-09 17:06:01

Dans Jenkins 2.60.3, il existe un moyen de supprimer les artefacts de construction (pas les artefacts archivés) afin d'économiser de l'espace disque sur la machine de construction. Dans la section Général, cochez "jeter les anciennes constructions" avec la stratégie "rotation du journal", puis allez dans ses options avancées. Deux autres options apparaîtront liées à la conservation des artefacts de construction pour le travail en fonction du nombre de jours ou de builds.

Les paramètres qui fonctionnent pour moi sont d'entrer 1 pour "nombre maximum de builds à conserver avec des artefacts", puis d'avoir une action post-construction pour archiver les artefacts. De cette façon, tous les artefacts de toutes les builds seront archivés, toutes les informations des builds seront sauvegardées, mais seule la dernière build conservera ses propres artefacts.

Ignorer les anciennes options de construction

1
répondu Matt 2017-11-28 17:55:29