我已经将一个构建分成多个阶段,这些阶段都包含在它们自己的节点块中。 如果 jenkins 实例上有大量活动,构建可以在这些阶段暂停,但是当执行者可用时它们应该继续。
stage('one'){
node { ... }
}
// free up the executor if many other builds are running
stage('two'){
node { ... }
}
此方法与 milestones 和 locks 一起使用可以取消等待时间过长的构建。
现在我们的问题是,对于多个节点块,文档说您必须 stash/unstash 文件以保留在最后一个工作区中生成的结果。现在我们的工作区包含许多文件,需要 5 到 10 分钟来存储/取消存储,这会扼杀所有其他性能提升。
有没有办法有效地保留最后一个工作区,直到构建完成。仅仅停留在同一个节点上并没有帮助,因为如果旧构建只是暂停,则同时启动的构建可以分配给同一个工作空间
def nodeName
stage('one'){
node {
nodeName = "${NODE_NAME}"
}
}
stage('two'){
node(nodeName) {
// this is the same node but another workspace
}
}
我见过的唯一可能强制工作区的方法是外部工作区管理器插件或ws步骤。 但随后我将失去并发构建的默认自动重定位功能,我需要自己进行清理,因为删除构建时不会删除这些工作区。
有什么想法即使在离开节点后也能保持工作空间吗?