Jenkins.eachDir()只迭代一次
我正在尝试做一个简单的内务处理管道来删除Jenkins中的旧工作区目录Jenkins.eachDir()只迭代一次,jenkins,groovy,jenkins-workflow,jenkins-pipeline,Jenkins,Groovy,Jenkins Workflow,Jenkins Pipeline,我正在尝试做一个简单的内务处理管道来删除Jenkins中的旧工作区目录 node { stage 'Housekeeping stage' echo "Deleting all old cell directories, older then ${env.MAXIMUM_CELL_LIVE} days" new File("${env.phaser_dir}\\workspace\\").eachDir() { dir -> long diff = ne
node {
stage 'Housekeeping stage'
echo "Deleting all old cell directories, older then ${env.MAXIMUM_CELL_LIVE} days"
new File("${env.phaser_dir}\\workspace\\").eachDir() { dir ->
long diff = new Date().getTime() - dir.lastModified()
if (diff > env.MAXIMUM_CELL_LIVE.toInteger() * 24 * 60 * 60 * 1000) {
dir.deleteDir()
}
}
}
结果是每次只迭代一次,只删除一个目录
我有最新版本的Pipeline 2.2。我也曾在谷歌上搜索过。每个迭代器都有类似的问题,但这应该是固定的吗
非常感谢
Michal这是Jenkins pipelines(以前的工作流)的一个已知问题,在JIRA存档为
请注意,在詹金斯的工作流程中,幕后发生了很多事情;在每行之后,Jenkins保存工作流的状态(循环中的位置、局部变量等),以便能够经受失败并恢复处理。这就是为什么在詹金斯内部解决这个问题不是件小事
不过,有一个简单的解决方法-只需使用@NonCPS
注释将逻辑移到一个单独的函数中即可
有关更多信息,请访问。您的jenkins版本是什么?最新版本@YuriG.谢谢,@NonCPA annotation已经为我修复了它。