J'ai un job de pipeline Jenkins qui archive un artefact dans sa première phase. Je dois ensuite copier cet artefact à un autre stade de la construction du pipeline.
node {
stage 'Stage 1 of build'
// Run tests, if successful archive the artifact
archiveArtifacts artifacts: 'build/test.js', excludes: null
stage 'Stage 2 of build'
// want to copy artifact from stage 1 of the build
step([$class: 'CopyArtifact', filter: 'build/test.js', fingerprintArtifacts: true, flatten: true, projectName: 'echo-develop-js-pipeline', selector: [$class: 'WorkspaceSelector'], target: './client/public/vendor/echo/'])
}
Avec cela, je reçois un unable to find a build for artifact copy
Lorsque l'artefact est créé, il est enregistré ici:
http://localhost:8181/view/Echo JS Develop/job/echo-develop-js-pipeline/233/artifact/build/test.js
Comment puis-je accéder à l'artefact créé à partir d'un travail de pipeline?
Vous avez compris cela, vous pouvez donc accéder aux artefacts avec le var $ {BUILD_NUMBER} via le pipeline actuel
step([$class: 'CopyArtifact', filter: 'build/test.js', fingerprintArtifacts: true, flatten: true, projectName: 'echo-develop-js-pipeline', selector: [$class: 'SpecificBuildSelector', buildNumber: '${BUILD_NUMBER}'], target: './client/public/vendor/echo/'])
J'avais besoin de cela récemment, et aucune des autres solutions ici n'a fait exactement ce que je voulais, car je ai besoin d'utiliser plusieurs filtres de paramètres pour ma sélection. Voici ce que j'ai fait en utilisant le "Run Selector Plugin" en plus de l'appel direct du "Copy Artifact Plugin":
Première étape: Sélectionnez le numéro de build dont vous avez besoin.
prereq_build = selectRun filter: parameters("TARGET_OS=${TARGET_OS},GIT_BRANCH_NAME=${GIT_BRANCH_NAME}"), job: 'prereq_rpms', selector: status('STABLE'), verbose: true
Deuxième étape: copie ( mise à jour 2017-11: prise en charge du pipeline natif maintenant! ).
copyArtifacts(
projectName: 'prereq_rpms',
filter: '**/*.rpm',
fingerprintArtifacts: true,
target: 'prereq',
flatten: true,
selector: specific(prereq_build.getId())
)
Dans le plug-in de pipeline, il existe une nouvelle fonctionnalité appelée "stash", "unstash" au lieu d'artefacts.
Artefact: les archives sont conçues pour le stockage de fichiers à plus long terme (par exemple, les fichiers binaires intermédiaires de vos versions). Artifact nécessite plus d'espace de stockage et de gestion des ressources.
Stash: Enregistre un ensemble de fichiers et les utilise ultérieurement dans la même version, généralement sur un autre nœud/espace de travail. Les étapes stash et unstash sont conçues pour être utilisées avec de petits fichiers. Stash/unstash peut être utilisé dans un pipeline en attribuant simplement un nom à la stash et ne fonctionne que localement.
Voici un bon exemple de stash/unstash: Tutorial