Search code examples
jenkinsgroovyjenkins-pipeline

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?


Solution

  • 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.