如何在Jenkins声明式流水线中正确使用file参数上传并读取文件?
正确的Jenkins声明式流水线上传并读取文件方法
问题根源
你使用的file类型参数上传的文件默认存放在Jenkins的临时目录,而非流水线工作区,直接通过参数名作为路径读取会触发文件未找到错误。
解决方案1:直接读取临时文件路径
Jenkins的file参数本身就存储了上传文件的临时绝对路径,只需确保正确引用参数并读取:
pipeline { agent any parameters { file(name: 'yamlFile', description: 'Upload file test') } stages { stage("读取上传的YAML文件") { steps { script { echo "工作区路径: ${WORKSPACE}" echo "上传文件的临时路径: ${yamlFile}" // 直接读取临时路径下的文件 def configVal = readYaml file: yamlFile echo "读取到的YAML内容: ${configVal}" } } } } }
解决方案2:复制文件到工作区后读取
如果临时路径存在权限或访问问题,可以先将上传的文件复制到流水线工作区,再进行读取:
pipeline { agent any parameters { file(name: 'yamlFile', description: 'Upload file test') } stages { stage("复制并读取YAML文件") { steps { script { // 定义工作区目标路径 def targetPath = "${WORKSPACE}/uploaded_config.yaml" // 复制临时文件到工作区 sh "cp ${yamlFile} ${targetPath}" // 读取工作区中的文件 def configVal = readYaml file: targetPath echo "读取到的YAML内容: ${configVal}" } } } } }
注意事项
- 确保流水线所在的Jenkins Agent有足够权限访问临时文件和工作区
- 如果使用
readYaml步骤,需要确保Jenkins已安装Pipeline Utility Steps插件
内容的提问来源于stack exchange,提问作者Rupesh Bovalekar
相关产品推荐
相关产品推荐

