在下面的代码中,
def url = "${BUILD_URL}console".toURL()
def consoleOutput = url.getText('utf-8')
Groovy脚本不允许使用语法toURL()
:
Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toURL java.lang.String. Administrators can decide whether to approve or reject this signature.
Error cause: org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toURL java.lang.String
另一种方法:
print "${BUILD_URL}console"
def data = readFile("${BUILD_URL}console")
出现错误:
java.nio.file.NoSuchFileException: /app/jenkins/workspace/../folder/https:/xxxx.yy.zz.cccc.cloud/job/a/b/job/67/console
输出后:
https:/xxxx.yy.zz.cccc.cloud/job/a/b/job/67/console
如何获取Jenkins build输出的内容?
答案 0 :(得分:1)
情况1: 由于错误状态,有几种常规方法,未经管理员事先许可无法访问。它必须先获得批准,然后才能始终使用。 (如果要在GUI中提供脚本而不是Jenkinsfile,则可以禁用此 Groovy Sandbox 并使用所有方法)
情况2:
该错误是您预期会发生的。 BUILD_URL
保留-顾名思义-当前版本的URL。可以在echo
中看到。
在第二个命令中,您可以在readFile
中使用它。 ReadFile
期望路径作为参数。由于BUILD_URL
并非以/
开头,因此将其视为相对路径,因此当前工作目录位于前面。
这导致常规尝试访问路径<current_workspace><build_url>
显然不起作用的文件。
无论哪种方式,我都不建议您获取GUI的控制台输出,因为
.../console
不一定包含整个输出(它仅包含最后n个字节;要访问完整的输出,您至少应查询.../consoleFull
)我反而建议使用this answer
中所述的REST API