I’m running multi-hour test cycles and my users have a demand for real-time results. If test #50 failed 45 minutes in, they want to be able to see it without waiting five hours for the rest of the tests to run. We’ve had this problem for longer than we’ve had Jenkins, so our solution is to have a log parser separate from Jenkins “tail” the build log, reading it as it’s being written and writing test results to a database powering a non-Jenkins web site. Said process is also reading other auxiliary files (far too many to turn into Jenkins artifacts), so it has to run on the host the slave node and the build are running on, not the machine hosting the Jenkins server.
The problem with this is that we have to make sure that everything gets appended to a log file on disk (so the parser can “tail” it) and to standard output (so that we can see it). Accidentally opening the log file for “write” rather than “append” truncates the log and the parser gets lost.
Is there a way for a process on the slave node machine to “tail” the build log that Jenkins is getting? Can Jenkins’ output log be replicated in real time in the workspace? Can a groovy JAR be run asynchronously inside the slave as it’s building, and watch the bytes go by? Any other ideas?
--Rob