Jenkinsfile build log
Actually it is possible using currentBuild.rawBuild.log
or better (not deprecated) currentBuild.rawBuild.getLog(100)
(for the last 100 lines), reference: http://javadoc.jenkins-ci.org/hudson/model/Run.html#getLog-int-
I searched a lot for a solution to analyze the log.
- use
rawBuild
was not OK, because I want to execute my scripts in a sandbox without additional approvals - use
tee
in the steps, that I want to analyse was not OK, because I don't want to modify previous steps, nor I don't want to have my whole log in RAM (and unfortunately I needed that on a Windows machine)
I found a solution inspired by Jesse Glicks answer:
- Under my.jenkins.url/pipeline-syntax/globals you can see, that the
manager
-variable allows you to analyse the log by usingmanager.logContains(regexp)
ormanager.getLogMatcher(regexp)
- So if you just want to check, that your log contains string
myTestString
you can just callmanager.logContains('.*myTestString.*')
- If you want to get some information from the first matching line you can use
manager.getLogMatcher(regexp)
Unfortunately I found no way to analyze the whole log (getLogMatcher
returns only the first matching line Matcher). So I see currently no way to e.g. count how often a log file contains a special string.
Not currently. (Properties of currentBuild
are documented under Snippet Generator ยป Global Variables by the way.)
It could be implemented, fairly easily, though it would not scale well with huge builds. JENKINS-28119 would provide a more scalable solution to what I am guessing your underlying request is.