Recentemente ho provato questo con poco successo. Sembra che ci sia un problema con questo. Secondo il documentation for class FileParameterValue c'è un costruttore che accetta un java.io.File
in questo modo:
@DataBoundConstructor
FileParameterValue(String name,
org.apache.commons.fileupload.FileItem file)
C'è un altro Wich aspetta una FileItem
in questo modo:
FileParameterValue(String name,
File file,
String originalFileName)
Ma dal momento che solo la prima è annotata con @DataBoundConstructor
anche quando io cerco di utilizzare questi ultimi in uno script:
file = new File(pwd(), 'test.txt');
build(
job: 'jobB',
parameters: [
[$class: "FileParameterValue", name: "TEST_FILE", file: file, originalFileName: 'test.txt']
]
)
Si noti che questo requi res approvazione copione per istanziare java.io.File
... ottengo il seguente errore:
java.lang.ClassCastException: hudson.model.FileParameterValue.file expects interface org.apache.commons.fileupload.FileItem but received class java.io.File
ho capito che solo un file caricato dall'utente come ingresso runtime interattivo fornisce un oggetto di tipo org.apache.commons.fileupload.FileItem
così nella fine ho fatto ricorso a archiving the file nel primo lavoro e a unarchiving nel lavoro downstream e ho risolto il problema. Ovviamente non è l'ideale, ma se sei in difficoltà è il modo più rapido per risolverlo.