java.File 对象只能从主节点恢复文件。
因此,为了将文件作为 java.File 对象加载,我们使用主节点来取消存储所需的文件,然后将它们包装为文件对象,最后将它们作为 FileParameterValue 对象发送。
node("myNode") {
sh " my-commands -f myFile.any " // This command create a new file.
stash includes: "*.any", name: "my-custom-name", useDefaultExcludes: true
}
node("master") {
unstash "my-custom-name"
def myFile = new File("${WORKSPACE}/myFile.any")
def myJob = build(job: "my-job", parameters:
[ string(name: 'required-param-1', value: "myValue1"),
new FileParameterValue("myFile.any", myFile, "myFile.any")
], propagate: false)
print "The Job execution status is: ${myJob.result}."
if(myJob.result == "FAILURE") {
error("The Job execution has failed.")
}
else {
print "The Job was executed successfully."
}
}
如果您需要发送的文件仅包含文本,您可以跳过主节点。
def myFileContent = readFile("myFile.txt")
FilePath fp = new FilePath(new File("${WORKSPACE}","myFile.txt"))
if(fp!=null){
fp.write(myFileContent, null)
}
def file = new File("${WORKSPACE}/myFile.txt")
然后照常使用 FileParameterValue 对象上的文件。
不要忘记导入 FilePath 对象 -> import hudson.FilePath