Quelqu'un pourrait-il m'expliquer l'idée des 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-ce considéré comme l'artefact?
Où dois-je dire à mon script de construction de placer le fichier jar? Dans le répertoire de l'espace de travail? Mon fichier jar obtient un nom de fichier unique en fonction de variables BUILD_ID
telles que, comment puis-je indiquer à Jenkins quel fichier jar choisir?
EDIT: D'accord, j'ai donc essayé de faire quelque chose comme ceci:
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 alors une erreur? Il semble que je manque quelque chose.
De plus, 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)? Sinon, cela obstruera le disque dur assez rapidement.
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
oubin
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.la source
sh 'mvn clean package'
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 vers le maître (serveur) et y sera stocké avec un lien vers la construction. L'avantage est qu'il est versionné de cette manière, 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 build sont hors ligne.
Il est possible de définir une expression régulière comme 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.
la source
Non, Hudson / Jenkins n'efface pas à lui seul l'espace de travail après une compilation. Vous pouvez avoir des actions dans votre processus de construction qui effacent, écrasent ou déplacent les artefacts de construction là 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 effacera l'espace de travail au début d'une nouvelle construction.
la source
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 sur le disque dur sur la machine de construction. Dans la section Général, cochez «Supprimer les anciennes versions» avec la stratégie «Journal de rotation», puis accédez à ses options avancées. Deux autres options apparaîtront liées à la conservation des artefacts de build pour le travail en fonction du nombre de jours ou de builds.
Les paramètres qui fonctionnent pour moi sont de saisir 1 pour "Nombre maximum de builds à conserver avec les artefacts", puis d'avoir une action post-build 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.
Supprimer les anciennes options de builds
la source