2016-06-07 22 views
9

Sto provando a spostare i lavori di generazione di Jenkins esistenti su una singola pipeline Jenkins 2 e mi chiedo se è possibile copiare i file da un nodo a un altro all'interno della build. La mia idea sarebbe:Copia artefatto di build tra i nodi usando la pipeline Jenkins

Node A (Windows) 
    Checkout scm 
    Execute ant build 
    Archive artifact (or whatever required action) 
Node B (Unix) 
    Checkout scm 
    Copy build artifact from node A --> is this possible ? 
    Execute ant build 
    Then followed by tests... 

Ho cercato di utilizzare la fase di copia artefatto, ma non sembra funzionare correttamente, quindi mi chiedo se c'è un modo per copiare i file in mezzo alla pipeline, o se devo stare con l'attuale architettura di compilazione (usando copy artifact plugin, ma con lavori di compilazione completamente separati).

+0

Benvenuto a StackOverflow. Puoi semplicemente includere il codice che "non sembra funzionare correttamente" nel tuo post ... ;-) – StephenKing

+0

Stavo usando 'step ([$ class: 'ArtifactArchiver', artefatti: 'dist/*. Zip']) 'per archiviare l'artefatto sul primo nodo e' passo ([$ class: 'CopyArtifact', filtro: 'dist/*. zip', fingerprintArtifacts: true, projectName: 'PCT') 'ma gli artefatti sembrano essere solo disponibile dopo la fine della compilazione –

risposta

7

Sì, questo è possibile utilizzando i passaggi stash/unstash.

A tutorial su questo si possono trovare anche in Jenkins Blog (focalizzata sulla esecuzione parallela):

parallel (
    "stream 1" : { 
        node { 
          unstash "binary"       
          sh "sleep 20s" 
          sh "echo hstream1" 
         } 
        }, 
    "stream 2" : { 
        node { 
          unstash "binary" 
          sh "echo hello2" 
          sh "hashtag fail"              
         } 
        } 
     )