是否有任何内置变量可以访问当前正在执行的构建的文本?
我尝试使用类似的东西currentBuild.log
,currentBuild.buildLog
但没有任何运气。
是否有任何内置变量可以访问当前正在执行的构建的文本?
我尝试使用类似的东西currentBuild.log
,currentBuild.buildLog
但没有任何运气。
实际上可以使用currentBuild.rawBuild.log
或更好(不推荐使用)currentBuild.rawBuild.getLog(100)
(对于最后 100 行),参考:http: //javadoc.jenkins-ci.org/hudson/model/Run.html#getLog-int-
我搜索了很多用于分析日志的解决方案。
rawBuild
不好,因为我想在沙箱中执行我的脚本而无需额外的批准tee
,我想分析的不好,因为我不想修改前面的步骤,也不想让我的整个日志在 RAM 中(不幸的是我需要在 Windows 机器上)我找到了一个受 Jesse Glicks 回答启发的解决方案:
manager
-variable 允许您使用manager.logContains(regexp)
或分析日志manager.getLogMatcher(regexp)
myTestString
您可以调用的字符串manager.logContains('.*myTestString.*')
manager.getLogMatcher(regexp)
不幸的是,我发现无法分析整个日志(getLogMatcher
仅返回匹配器的第一个匹配行)。所以我认为目前没有办法计算日志文件包含特殊字符串的频率。
不是现在。currentBuild
(顺便说一下,在Snippet Generator » Global Variables下记录了 的属性。)
它可以相当容易地实现,尽管它不能很好地适应大型构建。JENKINS-28119将为我猜测您的基本请求提供更具可扩展性的解决方案。
由于詹金斯给你BUILD_URL
,你可以下载它:
sh('wget -q --no-check-certificate -O build.log ' + BUILD_URL + 'consoleText')