Jenkinsfile(文件参数)仅返回上传的文件名(文件未保存在工作区中)

fkaflof6  于 2023-04-05  发布在  Jenkins
关注(0)|答案(1)|浏览(242)

我试图使用文件参数,这是不是保存在工作区的管道项目的文件,其返回的文件名上传(不是完整的路径,只有文件名)

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包含文件名。(没有完整的路径,因为FILE只是文件名)。所以,这是一个很好的解决方案来保存文件在工作区。我知道我们可以使用文件参数插件,但尝试使用文件参数(如果可能的话)。有什么解释readFile是如何工作的吗?

myzjeezk

myzjeezk1#

似乎file参数在管道中没有按预期工作,而只是在自由式作业中。您可以在此处找到有关此主题的更多信息:
Jenkins Pipeline Job with file parameter
或此处:
https://issues.jenkins.io/browse/JENKINS-27413
关于readFile,你可以在Jenkins文档中找到描述:
https://www.jenkins.io/doc/pipeline/steps/workflow-basic-steps/#readfile-read-file-from-workspace
简而言之,它是相对于工作区阅读文件的内容。因此,如果上传的文件驻留在工作区根目录中,例如,这应该可以工作:

filecontents = readFile file: "filename.txt"
echo "${filecontents}"

相关问题