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

Jenkinsfile stash时如何排除父目录仅保留子目录及内部文件?

Jenkins stash 仅保留demo目录层级的解决方案

问题根因

Jenkins的stash步骤默认会保留文件相对于执行stash操作时工作目录的完整路径结构。你之前的两次尝试均是在项目根目录执行stash,匹配的路径本身包含build/前缀,因此存储的内容自然会保留build这一层父目录,不符合预期。

最优解决方案(最推荐)

通过dir步骤切换工作目录到build目录后再执行stash,此时stash的根路径为build,仅匹配demo/**即可保留demo为最上层目录:

dir('build') {
  stash includes: 'demo/**', name: 'demoBuild'
}

后续在任意位置执行unstash 'demoBuild'时,会直接在当前工作目录下生成demo目录及其完整子内容,不会携带上层build目录。

替代方案(适用于无法切换工作目录的场景)

如果有特殊限制不能切换工作目录,可以先将demo目录移动到当前工作根目录再执行stash:

// 移动demo目录到根目录
sh 'mv build/demo ./demo'
// 执行stash
stash includes: 'demo/**', name: 'demoBuild'
// 可选:如果需要保留原目录结构,执行完stash后移动回去
sh 'mv ./demo build/demo'

内容的提问来源于stack exchange,提问作者Galileo123

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:06:04