我正在尝试使用文件参数,该参数不会将文件保存在管道项目的工作区中,它返回已上传的文件名(不是完整路径,只有文件名)
pipeline {
agent any
parameters {
file(name:'FILE', description: 'upload excel file')
}
stages {
stage('upload') {
steps {
script {
echo "Parameter file: ${params}" // output: Parameter file: [:]
echo "file name: ${FILE}" // file name: uploaded_file.xlsx
def workspace = pwd()
def fullPath = workspace + "\\" + FILE
if (fileExists(fullPath)) {
echo "File exists"
} else {
echo "File does not exist" // this will be run as fullPath has no such file.
}
}
}
}
}
}
只是为了让您知道
params.FILE
为空,并且 FILE
包含文件名。
现在,如果我尝试使用 readFile(FILE)
它的工作并返回文件的内容(没有完整路径,因为 FILE 只是文件名)。
因此,有一个很好的解决方案将文件保存在工作区中。
我知道我们可以使用文件参数插件,但尝试使用文件参数来实现(如果可能)。
有什么解释 readFile
是如何工作的吗?
似乎文件参数在管道中未按预期工作,而仅在自由式作业中工作。您可以在这里找到有关此主题的更多信息:
或这里:
https://issues.jenkins.io/browse/JENKINS-27413
关于readFile,你可以在Jenkins Docs中找到描述:
https://www.jenkins.io/doc/pipeline/steps/workflow-basic-steps/#readfile-read-file-from-workspace
简而言之,它正在读取相对于工作空间的文件内容。因此,如果上传的文件驻留在工作区根目录中,例如,这应该有效:
filecontents = readFile file: "filename.txt"
echo "${filecontents}"
你找到解决方案了吗?我有相同的用例,获取文件用户输入并将相同的文件上传到某个位置。但是文件丢失了