如何配置Jenkins以在工作区中显示我的日志?

时间:2012-02-14 16:37:02

标签: logging jenkins hudson

我正在使用Jenkins进行CI - 并且希望能够公开日志,这样我们就不必telnet到CI框来查看正在发生的事情。

是否有插件可以执行此操作?或者我应该只需要编写脚本吗?

3 个答案:

答案 0 :(得分:9)

我的回答是从不同的方框中读取应用程序服务器/容器日志文件,而不是运行Jenkins。例如,如果您使用Jenkins构建您的战争,然后将它们部署到多个环境,并且您希望从Jenkins CI服务器读取日志文件,而无需手动ssh / telnet其他框。 / p>

您可以创建一个Jenkins项目/作业,为您完成这项工作,在创建Jenkins项目后,您将找到Configure选项,并且在Build部分中有一个选项,您可以在其中编写shell脚本:

Shell script area

您的脚本可以是这样的:

#!/bin/sh

USER=<your ssh user>
HOST=<your remote host>
LOG_DIR=<your log file location>
FILE=<your log file>

cmd="ssh $USER@$HOST cat $LOG_DIR/$FILE"
echo $cmd
$cmd

或者更复杂的东西,例如在构建Jenkins Job之前传递参数,以便用户可以选择他们想要查看的环境和日志文件,有一个名为“This build is parameterized”的选项,您可以选择并添加参数:

Adding parameters

使用该配置,用户在尝试构建项目时将看到类似的内容:

enter image description here

shell脚本可以使用这样的参数:

#!/bin/sh

USER=<your ssh user>
LOG_DIR_DEV=<log files location in dev>
LOG_DIR_QA=<log files location in qa>

if [ $ENVIRONMENT = "dev" ]; then
  HOST=<your remote host for dev>
  LOG_DIR=$LOG_DIR_DEV
fi
if [ $ENVIRONMENT = "QA" ]; then
  HOST=<your remote host for qa>
  LOG_DIR=$LOG_DIR_QA
fi

echo ENVIRONMENT=$ENVIRONMENT
cmd="ssh $USER@$HOST cat $LOG_DIR/$FILE"
echo $cmd
$cmd

构建作业后,他们可以在Jenkins作业控制台中看到日志的输出,例如:

Console Output

如果您的日志文件太长,也许您可​​以在脚本中使用“tail”而不是“cat”。

答案 1 :(得分:7)

如果您指的是Jenkins构建的常规输出,可以通过“控制台输出”链接下的每个构建的Web UI获取。

如果您指的是在构建期间在工作区中生成的特定日志文件,则可以在作业配置的“构建后步骤”部分中选择“存档工件”选项。

在那里你可以指定一个文件模式,例如**/*.log

与该模式匹配的工作空间中的任何文件都将在每次构建结束时存档,并且将在构建的网页上显示。

请注意,如果 no 文件与此模式匹配,则构建将失败。

答案 2 :(得分:2)

您可以在构建期间创建日志并将它们作为工件附加,但是jenkins核心不允许您将控制台日志保存到工作区。如果要保存控制台日志,则需要安装ConsoleLogToWorkspace plugin。此插件将使您能够保存整个jenkins控制台日志。