| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- // var/cleanWorkspace.groovy 清理工作空间
- def call(Map config = [:]) {
- def cleanBeforeBuild = config.get('clean', true)
- def keepPatterns = config.get('keep', ['.git', '.gradle'])
- if (!cleanBeforeBuild) {
- echo "⏭️ Skipping workspace cleanup."
- echo "✅ Workspace ready at: ${pwd()}"
- return
- }
- echo "🧹 Cleaning workspace, preserving: ${keepPatterns}"
- if (isUnix()) {
- cleanUnix(keepPatterns)
- } else {
- cleanWindows(keepPatterns)
- }
- echo "✅ Workspace ready at: ${pwd()}"
- }
- // ---------- Unix ----------
- private void cleanUnix(List keep) {
- def mask = keep.join('|')
- sh """#!/bin/bash
- set +x
- shopt -s extglob dotglob
- rm -rf !(${mask})
- """
- }
- // ---------- Windows ----------
- private void cleanWindows(List keep) {
- // 先把要保留的写成 bat 可识别的“排除”语法
- def exclude = keep.collect { "/EXCLUDE:${it}" }.join(' ')
- bat """
- for /f "delims=" %%i in ('dir /b /a-d') do (
- echo %%i | findstr /i /v "${keep.join('|')}" >nul && del "%%i"
- )
- for /d %%d in (*) do (
- echo %%d | findstr /i /v "${keep.join('|')}" >nul && rd /s /q "%%d"
- )
- """
- }
|