如何在Jenkins新构建启动前清理所有阶段的工作区?
清理Jenkins并行流水线的所有关联工作区方案
方法1:流水线内置步骤结合节点遍历清理
在新构建的最开头(所有业务阶段之前)添加前置清理阶段,遍历项目涉及的节点,批量删除所有匹配格式的工作区:
pipeline { agent none stages { stage('Pre-Clean All Workspaces') { steps { script { // 定义需要清理的目标节点列表 def targetNodes = ['w1'] targetNodes.each { nodeName -> node(nodeName) { // 删除当前节点下该项目的所有工作区(含@1、@2这类并行后缀) sh 'rm -rf $WORKSPACE*' // Windows节点替换为以下命令 // bat 'rmdir /s /q %WORKSPACE%*' } } } } } // 后续并行构建及分析上传阶段... stage('Parallel Builds') { parallel { stage('Build Stream 1') { agent { node 'w1' } stages { stage('build') { steps { sh 'echo build stream 1' } } stage('test-xyz') { steps { sh 'echo run test xyz' } } stage('test-123') { steps { sh 'echo run test 123' } } } } stage('Build Stream 2') { agent { node 'w1' } stages { stage('build') { steps { sh 'echo build stream 2' } } stage('test-abc') { steps { sh 'echo run test abc' } } stage('test-456') { steps { sh 'echo run test 456' } } } } } } stage('Analyse & Upload') { agent { node 'w1' } steps { sh 'echo analyse results && echo upload to server' } } } }
- 核心逻辑:切换到目标节点后,通过通配符
$WORKSPACE*匹配所有关联工作区目录,一次性递归删除。
方法2:利用Workspace Cleanup插件配置前置清理
- 安装Jenkins官方的Workspace Cleanup插件
- 进入项目配置页,找到「Build Environment」区域,勾选「Delete workspace before build starts」
- 在「Additional criteria」中添加规则:勾选「Include pattern」并填入
**,同时勾选「Apply to subdirectories」 - 展开「Advanced」选项,勾选「Delete all build workspaces for this project on the node」—— 该选项会清理当前项目在节点上的所有工作区实例(含并行产生的带@后缀的工作区)
方法3:通过Jenkins Groovy API批量清理
如果需要更灵活的节点与工作区匹配规则,可使用Jenkins系统Groovy脚本(需确保流水线有对应权限):
script { def currentJob = Jenkins.instance.getItemByFullName(env.JOB_NAME) def targetNodes = Jenkins.instance.nodes.findAll { it.name.startsWith('w1') } targetNodes.each { node -> def workspaceParentDir = node.getWorkspaceFor(currentJob)?.parent if (workspaceParentDir) { workspaceParentDir.list().each { dir -> // 匹配当前项目的所有工作区目录 if (dir.name.startsWith(currentJob.name)) { dir.deleteRecursive() echo "Deleted workspace: ${dir.path}" } } } } }
- 该方法会自动筛选w1开头的节点,找到当前项目的所有关联工作区并递归删除,适合跨多个节点的复杂场景。
内容的提问来源于stack exchange,提问作者new_bie
相关产品推荐
相关产品推荐

