Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Copy file from Jenkins master to slave in Pipeline

I have some windows slave at my Jenkins so I need to copy file to them in pipeline. I heard about Copy To Slave and Copy Artifact plugins, but they doesn't have pipeline syntax manual. So I don't know how to use them in pipeline.

Direct copy doesn't work.

def inputFile = input message: 'Upload file', parameters: [file(name: 'parameters.xml')]
new hudson.FilePath(new File("${ENV:WORKSPACE}\\parameters.xml")).copyFrom(inputFile)

This code returns and error:

Caused: java.io.IOException: Failed to copy /var/lib/jenkins/jobs/_dev/jobs/(TEST)job/builds/107/parameters.xml to d:\Jenkins\workspace\_dev\(TEST)job\parameters.xml

Is there any way to copy file from master to slave in Jenkins Pipeline?

like image 975
Pavel Polushin Avatar asked Mar 12 '18 13:03

Pavel Polushin


1 Answers

As I understand copyFrom is executed on your Windows node, therefore the source path is not accessible.

I think you want to look into the stash/unstash steps (Jenkins Pipeline: Basic Steps), which work across different nodes. Also this example might be helpful.

like image 157
c11o Avatar answered Nov 15 '22 08:11

c11o