You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 02:26:19