|
|
@@ -0,0 +1,43 @@
|
|
|
+// 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 """
|
|
|
+ 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"
|
|
|
+ )
|
|
|
+ """
|
|
|
+}
|