Jenkins Pipeline使用File Operations Plugin指定目录文件拷贝需求咨询
解决Jenkins File Operations Plugin的精准复制需求
你的问题出在当前的复制规则过于宽泛,会匹配所有目录下的.dll文件,没办法区分VP1和其他VP目录的不同需求。结合你使用的Jenkins v2.73.2、Pipeline 2.5以及File Operations Plugin,我们可以通过拆分复制操作来实现精准控制,具体方案如下:
核心实现思路
我们需要分三个动作完成需求:
- 先创建目标目录
c:\workspace\Sample - 仅复制Test1/VP1、Test2/VP1下的.dll文件到对应目录
- 完整复制Test1/VP2、VP3、VP4和Test2/VP2、VP3、VP4下的所有文件及子目录
正确的Pipeline代码
fileOperations([ // 确保目标目录存在,避免复制失败 fileCreateDirOperation(directoryPath: 'c:\\workspace\\Sample'), // 只复制VP1目录下的.dll文件,保留原结构 fileCopyOperation( excludes: '', flattenFiles: false, includes: 'Test1\\VP1\\**\\*.dll,Test2\\VP1\\**\\*.dll', targetLocation: 'c:\\workspace\\Sample' ), // 复制VP2、VP3、VP4的全部内容,保留原结构 fileCopyOperation( excludes: '', flattenFiles: false, includes: 'Test1\\VP[2-4]\\**\\*,Test2\\VP[2-4]\\***', targetLocation: 'c:\\workspace\\Sample' ) ])
代码细节说明
- fileCreateDirOperation:提前创建
Sample目录,避免复制操作因目标目录不存在抛出错误 - 第一个复制操作:通过精确路径
Test1\\VP1\\**\\*.dll和Test2\\VP1\\**\\*.dll,仅抓取这两个VP1目录(含子目录)下的.dll文件,flattenFiles: false会保留原有的目录层级,复制后Sample下会出现Test1/VP1和Test2/VP1目录,里面只有符合要求的.dll文件 - 第二个复制操作:用
VP[2-4]通配符匹配VP2、VP3、VP4,**\\*表示抓取这些目录下的所有文件和子目录,同样保留原结构复制到Sample中
这样就能严格满足你的需求:VP1仅复制.dll文件,其他VP目录完整复制所有内容。
内容的提问来源于stack exchange,提问作者Sri
相关产品推荐
相关产品推荐

