Jenkins使用fileOperations将DEVBUILDS中Zip文件解压至同目录
问题
需要从DEVBUILDS目录及其子目录中批量解压所有Zip文件,要求每个Zip文件解压到自身所在的同一目录,生成与原文件同名(无.zip后缀)的内容。但不确定targetLocation参数该如何设置:
- 指定具体路径(如
\\1.1.1.1\exampleFolder\targetFolder)时能正常解压,但无法适配大量分散的Zip文件 - 尝试过
'**/**'、'.'或'/**'作为targetLocation,均无效
当前代码:
stage('DevBuildsUnzip'){ def DEVBUILDS = "\\\\1.1.1.1\\exampleFolder\\sourceZipFolder" dir(DEVBUILDS) { fileOperations([ fileUnZipOperation(filePath: '**/**.zip', targetLocation: '') ]) } }
解决方案
要实现每个Zip文件在自身目录下解压并生成同名文件夹,需借助fileOperations插件的动态路径变量,而非固定路径或无效通配符:
核心配置逻辑
- 将
targetLocation设置为'${FILE_PATH}',该内置变量会自动替换为当前匹配到的Zip文件的父目录路径 - 启用
destinationFolder: true参数,确保插件自动创建与原Zip文件同名(无.zip后缀)的文件夹存放解压内容
- 将
修改后的完整代码
stage('DevBuildsUnzip'){ def DEVBUILDS = "\\\\1.1.1.1\\exampleFolder\\sourceZipFolder" dir(DEVBUILDS) { fileOperations([ fileUnZipOperation( filePath: '**/*.zip', // 规范通配符,匹配所有子目录下的zip文件 targetLocation: '${FILE_PATH}', // 动态获取当前zip文件的所在目录 destinationFolder: true // 自动生成与zip同名的解压文件夹 ) ]) } }
- 关键说明
${FILE_PATH}是插件针对批量操作提供的动态变量,会为每个Zip文件单独计算其所在目录destinationFolder: true直接满足“生成与原文件同名但无.zip后缀的内容”的需求,无需手动拼接路径- 通配符
**/*.zip比**/**.zip更精准,明确匹配所有子目录下的.zip格式文件
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

