如何通过file参数触发Jenkins声明式pipeline任务并获取上传文件
Jenkins声明式流水线使用上传文件参数方案
基础配置说明
首先在流水线任务的参数设置中添加文件(File)类型参数,自定义参数名即可,示例中我们使用UPLOAD_FILE作为文件参数名。
上传文件的存储与调用规则
- 触发构建时上传的文件会默认存储在当前构建的工作区根目录下,保留用户上传的原始文件名
- 直接通过
params.UPLOAD_FILE即可获取该文件在构建节点上的绝对路径,无需手动查找存储位置
完整声明式流水线示例
pipeline { agent any // 定义文件参数 parameters { file(name: 'UPLOAD_FILE', description: '上传需要处理的文件') } stages { stage('文件校验') { steps { script { // 输出文件路径与名称 echo "上传文件绝对路径:${params.UPLOAD_FILE}" echo "上传文件原始名称:${new File(params.UPLOAD_FILE).getName()}" } // 查看工作区文件列表,确认文件已上传 sh 'ls -lh ${WORKSPACE}' } } stage('自定义文件处理') { steps { // 示例:如果是压缩包直接解压 sh 'mkdir -p ./process_output && unzip -o ${params.UPLOAD_FILE} -d ./process_output' // 此处可添加你的业务处理逻辑 } } } post { always { // 可选:构建结束后清理工作区,避免磁盘占用 deleteDir() } } }
注意事项
- 若使用分布式构建节点,Jenkins会自动将上传的文件分发到调度到的构建节点工作区,无需手动跨节点拷贝
- 所有调用场景直接使用
params.自定义文件参数名变量即可,不要硬编码路径,适配不同构建场景的路径差异 - 若需要长期留存上传的文件,可在处理阶段将文件拷贝到公共存储目录,再执行工作区清理操作
内容的提问来源于stack exchange,提问作者lukipedio
相关产品推荐
相关产品推荐

