web-dev-qa-db-fra.com

Archiver les artefacts à Jenkins

Quelqu'un pourrait-il m'expliquer s'il vous plaît l'idée de artefacts dans le processus de construction?

J'ai le répertoire de l'espace de travail où je récupère 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-ce considéré comme l'artefact?

Où devrais-je dire à mon script de construction de mettre le fichier jar? Dans le répertoire de l'espace de travail? Mon fichier jar reçoit un nom de fichier unique en fonction de variables telles que BUILD_ID, etc., comment puis-je indiquer à Jenkins quel fichier jar choisir?

EDIT: Ok, alors j'ai essayé de faire quelque chose comme ça:

enter image description here

Le chemin n'existe pas encore dans mon espace de travail, car le script de génération est censé le créer et, bien sûr, les fichiers .jar et .properties ne sont pas présents car ils n'ont pas encore été générés. Pourquoi ça me donne une erreur alors? On dirait que je manque quelque chose.

En outre, Jenkins supprime-t-il les artefacts après chaque construction (pas les artefacts archivés, je sais que je peux lui dire de les supprimer)? Sinon, le disque dur s'encrassera assez rapidement.

123
Michael

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 courante consiste à placer le résultat d'une construction dans un répertoire build, target ou bin.

L'archiveur Jenkins peut utiliser globs (target/*.jar) pour choisir facilement le bon fichier, même si vous avez un nom unique par construction.

64
Anders Lindahl

Un artefact peut être n'importe quel résultat de votre processus de construction. L'important est que peu importe le client sur lequel il a été construit, il sera transféré de l'espace de travail au maître (serveur) et y sera stocké avec un lien vers la construction. L'avantage est qu'il est versionalisé de cette façon, il vous suffit de 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 génération sont hors ligne.

Il est possible de définir une expression régulière en tant que 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.

11
Matthias Alleweldt

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

Non, Hudson/Jenkins n’efface pas l’espace de travail après une construction. Votre processus de construction peut comporter des actions 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 Options de projet avancées (qui doit être développée), appelée "Nettoyer l’espace de travail avant la construction", qui effacera l’espace de travail au début d’une nouvelle construction.

7
Codex24

Dans Jenkins 2.60.3, il existe un moyen de supprimer les artefacts de construction (et non les artefacts archivés) afin d'économiser de l'espace sur le disque dur sur la machine de construction. Dans la section Général, cochez la case "Supprimer les anciennes versions" avec la stratégie "Rotation du journal", puis accédez à 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 générations.

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

Supprimer les anciennes options de construction

1
Matt