是否有任何内置变量可以访问当前正在执行的构建的文本?
我尝试使用类似currentBuild.log
,currentBuild.buildLog
的内容,但没有任何运气。
答案 0 :(得分:7)
实际上可以使用currentBuild.rawBuild.log
或更好(不推荐)currentBuild.rawBuild.getLog(100)
(最后100行),参考:http://javadoc.jenkins-ci.org/hudson/model/Run.html#getLog-int-
答案 1 :(得分:5)
我搜索了很多解析日志的解决方案。
rawBuild
不行,因为我想在没有其他批准的情况下在沙箱中执行我的脚本tee
不行,因为我不想修改以前的步骤,也不想让我的整个日志记录在RAM中(不幸的是我在Windows机器上需要它)我找到了一个灵感来自Jesse Glicks答案的解决方案:
manager
- 变量允许您使用manager.logContains(regexp)
或manager.getLogMatcher(regexp)
myTestString
,您只需拨打manager.logContains('.*myTestString.*')
manager.getLogMatcher(regexp)
不幸的是我发现无法分析整个日志(getLogMatcher
只返回第一个匹配的匹配行)。所以我看到目前没办法,例如计算日志文件包含特殊字符串的频率。
答案 2 :(得分:2)
目前不是。 (顺便说一句,currentBuild
的属性记录在 Snippet Generator»Global Variables 下。)
可以实现,相当容易,虽然它不能很好地扩展到庞大的构建。 JENKINS-28119将为我猜测您的基础请求提供更具可扩展性的解决方案。
答案 3 :(得分:0)
由于 Jenkins 为您提供了 BUILD_URL
,您可以下载它:
sh('wget -q --no-check-certificate -O build.log ' + BUILD_URL + 'consoleText')