有没有内置变量可以访问当前正在执行的构建的文本内容?
我尝试使用类似于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
变量允许您使用manager.logContains(regexp)
或manager.getLogMatcher(regexp)
来分析日志myTestString
,您可以调用manager.logContains('.*myTestString.*')
manager.getLogMatcher(regexp)
不幸的是,我没有找到分析整个日志的方法(getLogMatcher
仅返回第一个匹配行的Matcher)。因此,目前我无法计算日志文件包含特定字符串的次数。
currentBuild
的属性在片段生成器»全局变量下有文档记录。虽然这样做会在大型构建中不利于扩展,但它可以被相对容易地实现。我猜您的根本请求是由JENKINS-28119提供了更可扩展的解决方案。mvn clean deploy
),并且如果服务器测试失败,我希望从Nexus存储库中删除这些构件。目前对我来说最简单的方法是解析日志以获取*Uploaded: http.....*文本,并在它们上执行HTTP DELETE操作。 - Krzysztof Krasońsh 'mvn clean deploy | tee logs'; def logs = readFile 'logs'
而不尝试访问整个_build_的日志。 - Jesse GlickJenkins提供BUILD_URL
,您可以下载它:
sh('wget -q --no-check-certificate -O build.log ' + BUILD_URL + 'consoleText')
currentBuild.rawBuild.log
并允许脚本访问 rawBuild
更好。 - Axel Heider
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method hudson.model.Run getLog int
,而且my.jenkins.site/scriptApproval/页面甚至没有显示它。我仍在寻找解决这个烦人问题的答案。 - Jason De Arte