我希望在创建此输出的同一作业中访问Jenkins控制台输出并将其作为生成后步骤进行grep。使用>> log.txt重定向日志不是解决方案,因为我的生成步骤不支持此操作。构建版本:
>> log.txt
echo "This is log"
构建后步骤:
grep "is" path/to/console_output
在文件系统中的什么位置创建特定的日志文件?
enyaitl31#
@Bruno Lavit有一个很好的答案,但是如果你想的话,你可以访问日志,并从作业的URL将它作为txt文件下载到你的工作区:
${BUILD_URL}/consoleText
那么,只需将此页面下载到${Workspace}
${Workspace}
Invoke ANT
祝你好运!编辑:文件系统上的实际日志文件不在从属计算机上,而是保存在主计算机上。您可以在以下位置找到它:$JENKINS_HOME/jobs/$JOB_NAME/builds/lastSuccessfulBuild/log如果您正在寻找另一个构建版本,只需将lastSuccessfulBuild替换为您正在寻找的构建版本。
$JENKINS_HOME/jobs/$JOB_NAME/builds/lastSuccessfulBuild/log
lastSuccessfulBuild
gcxthw6b2#
Jenkins将控制台日志存储在主服务器上。如果要以编程方式访问日志,并且正在主服务器上运行,则可以访问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存储构建附属品(比如测试xml、环境变量和其他可能没有通过工件显式公开的东西)的文件夹,我们也可以解析这些附属品。双倍附加奖金;我们也使用矩阵作业。2这有时候会使系统上的文件路径推断变得很痛苦。3.getLogFile()。4.getParent()消除了所有的痛苦。
jslywgbw3#
您可以安装这个Jenkins Console log插件,作为构建后的一个步骤在您的工作区中写入日志。你必须build the plugin yourself和install the plugin manually。接下来,您可以添加如下所示的生成后步骤:
通过一个额外的构建后步骤(shell脚本),您将能够grep您的日志。我希望这有帮助:)
m0rkklqb4#
日志位置:
${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${BUILD_NUMBER}/log
获取文本日志并保存到工作区:
cat ${JENKINS_HOME}/jobs/${JOB_NAME}/builds/${BUILD_NUMBER}/log >> log.txt
qojgxg4l5#
对于非常大的输出日志,可能很难打开(网络延迟,滚动)。这是我用来检查大日志文件的解决方案:
https://${URL}/jenkins/job/${jobName}/${buildNumber}/
在左列中,您可以看到:View as plain text。用鼠标右键点击它,然后选择save links as。现在你可以将你的大日志保存为.txt文件。用记事本++打开它,你可以很容易地浏览你的日志,在滚动过程中没有网络延迟。
View as plain text
save links as
7nbnzgx96#
我在浏览器的以下位置找到了作业的控制台输出:http://[Jenkins URL]/job/[Job Name]/default/[Build Number]/console
http://[Jenkins URL]/job/[Job Name]/default/[Build Number]/console
6ovsh4lw7#
这是为在有shell脚本构建步骤时使用而设计的。只使用前两行来获取文件名。您可以通过以下方式从shell脚本获取当前构建版本的控制台日志文件(使用bash magic),并检查其中是否存在错误字符串,如果发现错误,则会导致作业失败:
logFilename=${JENKINS_HOME}/${JOB_URL:${#JENKINS_URL}} logFilename=${logFilename//job\//jobs\/}builds/${BUILD_NUMBER}/log grep "**Failure**" ${logFilename} ; exitCode=$? [[ $exitCode -ne 1 ]] && exit 1
您必须通过以下方法构建文件名:获取JOB_URL,去掉前面的主机名部分,添加JENKINS_HOME的路径,将“/job/”替换为“/jobs/”以处理所有嵌套的文件夹,添加当前的内部版本号和文件名。如果找到了字符串,grep返回0,如果有文件错误,则返回2。因此,1意味着它找到了错误指示字符串。这会使构建失败。
rsaldnfx8#
简单的解决办法是:
curl http://jenkinsUrl/job/<Build_Name>/<Build_Number>/consoleText -OutFile <FilePathToLocalDisk>
或上一次成功生成的时间...
curl http://jenkinsUrl/job/<Build_Name>/lastSuccessfulBuild/consoleText -OutFile <FilePathToLocalDisk>
mw3dktmi9#
如果你有jenkins master的访问权限,可以直接访问或只访问使用任何持久卷的文件夹。下面是获取日志文件的示例路径。可以看到数据文件夹中的部分,这是你的Jenkins文件夹。
9条答案
按热度按时间enyaitl31#
@Bruno Lavit有一个很好的答案,但是如果你想的话,你可以访问日志,并从作业的URL将它作为txt文件下载到你的工作区:
那么,只需将此页面下载到
${Workspace}
Invoke ANT
“和GET目标祝你好运!
编辑:文件系统上的实际日志文件不在从属计算机上,而是保存在主计算机上。您可以在以下位置找到它:
$JENKINS_HOME/jobs/$JOB_NAME/builds/lastSuccessfulBuild/log
如果您正在寻找另一个构建版本,只需将
lastSuccessfulBuild
替换为您正在寻找的构建版本。gcxthw6b2#
Jenkins将控制台日志存储在主服务器上。如果要以编程方式访问日志,并且正在主服务器上运行,则可以访问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存储构建附属品(比如测试xml、环境变量和其他可能没有通过工件显式公开的东西)的文件夹,我们也可以解析这些附属品。
双倍附加奖金;我们也使用矩阵作业。2这有时候会使系统上的文件路径推断变得很痛苦。3.getLogFile()。4.getParent()消除了所有的痛苦。
jslywgbw3#
您可以安装这个Jenkins Console log插件,作为构建后的一个步骤在您的工作区中写入日志。
你必须build the plugin yourself和install the plugin manually。
接下来,您可以添加如下所示的生成后步骤:
通过一个额外的构建后步骤(shell脚本),您将能够grep您的日志。
我希望这有帮助:)
m0rkklqb4#
日志位置:
获取文本日志并保存到工作区:
qojgxg4l5#
对于非常大的输出日志,可能很难打开(网络延迟,滚动)。这是我用来检查大日志文件的解决方案:
在左列中,您可以看到:
View as plain text
。用鼠标右键点击它,然后选择save links as
。现在你可以将你的大日志保存为.txt文件。用记事本++打开它,你可以很容易地浏览你的日志,在滚动过程中没有网络延迟。7nbnzgx96#
我在浏览器的以下位置找到了作业的控制台输出:
http://[Jenkins URL]/job/[Job Name]/default/[Build Number]/console
6ovsh4lw7#
这是为在有shell脚本构建步骤时使用而设计的。只使用前两行来获取文件名。
您可以通过以下方式从shell脚本获取当前构建版本的控制台日志文件(使用bash magic),并检查其中是否存在错误字符串,如果发现错误,则会导致作业失败:
您必须通过以下方法构建文件名:获取JOB_URL,去掉前面的主机名部分,添加JENKINS_HOME的路径,将“/job/”替换为“/jobs/”以处理所有嵌套的文件夹,添加当前的内部版本号和文件名。
如果找到了字符串,grep返回0,如果有文件错误,则返回2。因此,1意味着它找到了错误指示字符串。这会使构建失败。
rsaldnfx8#
简单的解决办法是:
或上一次成功生成的时间...
mw3dktmi9#
如果你有jenkins master的访问权限,可以直接访问或只访问使用任何持久卷的文件夹。下面是获取日志文件的示例路径。
可以看到数据文件夹中的部分,这是你的Jenkins文件夹。