Przeglądaj źródła

Relative paths, jornalctl in additional logs (#48276)

* Relative paths, jornalctl in additional logs

This PR fixes the archive generation to preserve the paths relative to
the project directory.
It also fixes calling journalctl to get the system log.
* explicitly remove the file we are building
* Skip files locked on windows
* Extended readability probe
* Try to read the file ahead on windows
* Make the tar a best effort
* Catch all exceptions
Alpar Torok 6 lat temu
rodzic
commit
e8d9e32968
1 zmienionych plików z 38 dodań i 38 usunięć
  1. 38 38
      gradle/build-complete.gradle

+ 38 - 38
gradle/build-complete.gradle

@@ -11,49 +11,49 @@ if (buildNumber) {
             project.delete(uploadFile)
         }
 
-        OS.current()
-                .conditional()
-                .onUnix {
-                    project.exec {
-                        ignoreExitValue = true
-                        workingDir projectDir
-                        commandLine 'bash', '-c', 'journalctl --since "1 hour ago" 2>&1 > journalctl.log'
-                    }
-                }
-                .onWindows {
+        def isWindows = OS.current() == OS.WINDOWS
+        if (OS.current() == OS.LINUX) {
+            project.exec {
+                ignoreExitValue = true
+                workingDir projectDir
+                commandLine 'bash', '-c', 'journalctl --since "1 hour ago" 2>&1 > journalctl.log'
+            }
+        }
 
+        try {
+            ant.tar(destfile: uploadFile, compression: "bzip2", longfile: "gnu") {
+                fileset(dir: projectDir) {
+                    fileTree(projectDir)
+                            .include("**/*.hprof")
+                            .include("**/reaper.log")
+                            .include("**/journalctl.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()))
+                            }
                 }
-                .onMac {
 
+                fileset(dir: "${gradle.gradleUserHomeDir}/daemon/${gradle.gradleVersion}", followsymlinks: false) {
+                    include(name: "**/daemon-${ProcessHandle.current().pid()}*.log")
                 }
 
-        ant.tar(destfile: uploadFile, compression: "bzip2", longfile: "gnu") {
-            fileTree(projectDir)
-                    .include("**/*.hprof")
-                    .include("**/reaper.log")
-                    .include("**/journalctl.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 { fileset(file: it) }
-
-
-            fileset(dir: "${gradle.gradleUserHomeDir}/daemon/${gradle.gradleVersion}", followsymlinks: false) {
-                include(name: "**/daemon-${ProcessHandle.current().pid()}*.log")
-            }
-
-            if (Files.isReadable(file("/var/log/").toPath())) {
-                Files.list(file("/var/log/").toPath())
-                        .filter { it.fileName.endsWith(".log") }
-                        .filter { Files.isReadable(it) }
-                        .filter { Files.isRegularFile(it) }
-                        .forEach {
-                            fileset(file: it)
-                        }
+                if (Files.isReadable(file("/var/log/").toPath())) {
+                    Files.list(file("/var/log/").toPath())
+                            .filter { it.fileName.endsWith(".log") }
+                            .filter { Files.isReadable(it) }
+                            .filter { Files.isRegularFile(it) }
+                            .forEach {
+                                fileset(file: it)
+                            }
+                }
             }
+        } catch (Exception e) {
+            logger.lifecycle("Failed to archive additional logs", e)
         }
     }
-}
+}