Browse Source

Fix cases where we would unintentionally tar the entire build workspace (#49130)

Fix cases where we would unintentionally tar the entire build workspace
Mark Vieira 6 years ago
parent
commit
49be465711
1 changed files with 19 additions and 11 deletions
  1. 19 11
      gradle/build-complete.gradle

+ 19 - 11
gradle/build-complete.gradle

@@ -13,18 +13,26 @@ if (buildNumber) {
     try {
       ant.tar(destfile: uploadFile, compression: "bzip2", longfile: "gnu") {
         fileset(dir: projectDir) {
-          fileTree(projectDir)
-            .include("**/*.hprof")
-            .include("**/reaper.log")
-            .include("**/build/testclusters/**")
-            .exclude("**/build/testclusters/**/data/**")
-            .exclude("**/build/testclusters/**/distro/**")
-            .exclude("**/build/testclusters/**/repo/**")
-            .exclude("**/build/testclusters/**/extract/**")
-            .filter { Files.isRegularFile(it.toPath()) }
-            .each {
-              include(name: projectDir.toPath().relativize(it.toPath()))
+          Set<File> fileSet = fileTree(projectDir) {
+            include("**/*.hprof")
+            include("**/reaper.log")
+            include("**/build/testclusters/**")
+            exclude("**/build/testclusters/**/data/**")
+            exclude("**/build/testclusters/**/distro/**")
+            exclude("**/build/testclusters/**/repo/**")
+            exclude("**/build/testclusters/**/extract/**")
+          }
+            .files
+            .findAll { Files.isRegularFile(it.toPath()) }
+
+          if (fileSet.empty) {
+            // In cases where we don't match any workspace files, exclude everything
+            ant.exclude(name: "**/*")
+          } else {
+            fileSet.each {
+              ant.include(name: projectDir.toPath().relativize(it.toPath()))
             }
+          }
         }
 
         fileset(dir: "${gradle.gradleUserHomeDir}/daemon/${gradle.gradleVersion}", followsymlinks: false) {