如何在Jenkins中编写类似xcopy的Groovy文件移动脚本
在Jenkins中实现类似xcopy的文件移动方案及Groovy脚本示例
在Jenkins里实现跨文件夹的文件移动,有两种实用思路:一是调用系统原生命令(适配不同OS的类似xcopy功能),二是用Groovy编写跨平台脚本,无需依赖系统命令。
一、使用系统原生命令实现(类似xcopy功能)
根据Jenkins运行的操作系统,直接执行对应命令:
- Windows环境:用
xcopy复制后删除源文件实现移动效果
参数说明:xcopy "D:\jenkins_workspace\source\*" "D:\jenkins_workspace\target\" /E /H /Y /R rmdir /S /Q "D:\jenkins_workspace\source"/E复制所有子目录(含空目录),/H包含隐藏和系统文件,/Y覆盖目标文件不提示,/R覆盖只读文件 - Linux/macOS环境:同分区用
mv高效移动,跨分区用cp+rm组合# 同分区直接移动 mv /var/jenkins_home/workspace/source/* /var/jenkins_home/workspace/target/ # 跨分区复制后删除源文件 cp -r /var/jenkins_home/workspace/source/* /var/jenkins_home/workspace/target/ rm -rf /var/jenkins_home/workspace/source
二、Jenkins Groovy脚本实现跨平台文件移动
利用Groovy的File类和Jenkins内置的Apache Commons IO工具,实现跨Windows/Linux的通用移动逻辑,无需关注系统差异。
示例1:完整目录移动
import org.apache.commons.io.FileUtils // 定义源目录和目标目录(使用Jenkins内置工作空间变量) def sourceDir = new File("${WORKSPACE}/source") def targetDir = new File("${WORKSPACE}/target") // 确保目标目录存在 if (!targetDir.exists()) { targetDir.mkdirs() } // 移动整个源目录到目标目录(自动处理跨分区情况) FileUtils.moveDirectory(sourceDir, targetDir)
示例2:筛选特定文件移动(模拟xcopy的过滤功能)
比如只移动.jar和.war格式的文件:
import org.apache.commons.io.FileUtils import org.apache.commons.io.filefilter.FileFilterUtils def sourceDir = new File("${WORKSPACE}/source") def targetDir = new File("${WORKSPACE}/target") targetDir.mkdirs() // 定义文件过滤器:仅匹配.jar和.war后缀的文件 def fileFilter = FileFilterUtils.suffixFileFilter([".jar", ".war"]) // 递归遍历源目录,移动符合条件的文件 sourceDir.eachFileRecurse(fileFilter) { sourceFile -> // 计算目标文件的相对路径,保持源目录的结构 def relativePath = sourceDir.toURI().relativize(sourceFile.toURI()).getPath() def targetFile = new File(targetDir, relativePath) // 确保目标文件的父目录存在 targetFile.parentFile.mkdirs() // 先尝试重命名移动(同分区高效),失败则用复制+删除(跨分区场景) if (!sourceFile.renameTo(targetFile)) { FileUtils.copyFile(sourceFile, targetFile) sourceFile.delete() } }
三、关键注意事项
- 权限验证:Jenkins运行用户必须拥有源目录和目标目录的读写权限
- 跨分区处理:直接用
renameTo在跨分区时可能失败,需通过复制+删除兜底 - 工作空间变量:
${WORKSPACE}是Jenkins内置变量,指向当前任务的工作空间根目录
内容的提问来源于stack exchange,提问作者Sandeep Pal
相关产品推荐
相关产品推荐

