web-dev-qa-db-fra.com

Copier un artefact dans un pipeline jenkins

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?

6
Richlewis

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/'])
6
Richlewis

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())
        )
5
Aaron D. Marasco

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

2
lakshmi kumar