我想访问和grep Jenkins控制台输出作为创建此输出的同一作业中的后期构建步骤.重定向日志>> log.txt
不是解决方案,因为我的构建步骤不支持此功能.
建立:
echo "This is log"
后期制作步骤:
grep "is" path/to/console_output
在文件系统中创建的特定日志文件在哪里?
@Bruno Lavit有一个很好的答案,但如果你想要,你只需访问日志并将其作为txt文件从作业的URL下载到你的工作区:
${BUILD_URL}/consoleText
然后,只需将此页面下载到您的网站即可 ${Workspace}
您可以使用" Invoke ANT
"并使用GET目标
在Linux上,您可以使用wget将其下载到您的工作区
等等
祝好运!
编辑:文件系统上的实际日志文件不在从属服务器上,而是保存在主服务器中.你可以在下面找到它:$JENKINS_HOME/jobs/$JOB_NAME/builds/lastSuccessfulBuild/log
如果您正在寻找另一个版本,只需替换lastSuccessfulBuild
您正在寻找的版本.
您可以安装此Jenkins控制台日志插件,以便在工作区中编写日志作为后期构建步骤.
您必须自己构建插件并手动安装插件.
接下来,您可以像这样添加一个post build步骤:
通过额外的后期构建步骤(shell脚本),您将能够grep您的日志.
我希望它有帮助:)
Jenkins将控制台日志存储在master上.如果您希望以编程方式访问日志,并且您在master上运行,则可以访问Jenkins已有的日志,而无需将其复制到工件或必须获取http作业URL.
从http://javadoc.jenkins.io/archive/jenkins-1.651/hudson/model/Run.html#getLogFile()返回控制台输出的File对象(在jenkins文件系统中,这是"log" "构建输出目录中的文件".
在我的例子中,我们使用链式(子)作业来对父作业的构建进行解析和分析.
当使用在Jenkins中运行的groovy脚本时,您将获得一个名为"build"的对象.我们使用它来获取上游作业的http://javadoc.jenkins.io/archive/jenkins-1.651/hudson/model/Build.html,然后调用此作业的.getLogFile().
增加奖金; 因为它只是一个File对象,所以我们调用.getParent()来获取Jenkins存储构建附属文件的文件夹(如测试xmls,环境变量以及其他可能未通过工件显式公开的内容),我们也可以解析它们.
双倍额外奖金; 我们也使用矩阵作业.这有时会使系统上的文件路径变得很麻烦..getLogFile().getParent()消除了所有的痛苦.
对于非常大的输出日志,可能很难打开(网络延迟,滚动)。这是我用来检查大日志文件的解决方案:
https://URL/jenkins/job/name/
在左栏中,您将看到: View as plain text
。做一个正确的就可以了鼠标点击和选择save links as
。现在,您可以将大日志另存为.txt文件。使用记事本++打开它,您可以轻松浏览日志,而在滚动过程中不会出现网络延迟。