我正在使用Jenkins进行CI - 并且希望能够公开日志,这样我们就不必telnet到CI框来查看正在发生的事情。
是否有插件可以执行此操作?或者我应该只需要编写脚本吗?
答案 0 :(得分:9)
我的回答是从不同的方框中读取应用程序服务器/容器日志文件,而不是运行Jenkins。例如,如果您使用Jenkins构建您的战争,然后将它们部署到多个环境,并且您希望从Jenkins CI服务器读取日志文件,而无需手动ssh / telnet其他框。 / p>
您可以创建一个Jenkins项目/作业,为您完成这项工作,在创建Jenkins项目后,您将找到Configure选项,并且在Build部分中有一个选项,您可以在其中编写shell脚本:
您的脚本可以是这样的:
#!/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”的选项,您可以选择并添加参数:
使用该配置,用户在尝试构建项目时将看到类似的内容:
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作业控制台中看到日志的输出,例如:
如果您的日志文件太长,也许您可以在脚本中使用“tail”而不是“cat”。
答案 1 :(得分:7)
如果您指的是Jenkins构建的常规输出,可以通过“控制台输出”链接下的每个构建的Web UI获取。
如果您指的是在构建期间在工作区中生成的特定日志文件,则可以在作业配置的“构建后步骤”部分中选择“存档工件”选项。
在那里你可以指定一个文件模式,例如**/*.log
。
与该模式匹配的工作空间中的任何文件都将在每次构建结束时存档,并且将在构建的网页上显示。
请注意,如果 no 文件与此模式匹配,则构建将失败。
答案 2 :(得分:2)
您可以在构建期间创建日志并将它们作为工件附加,但是jenkins核心不允许您将控制台日志保存到工作区。如果要保存控制台日志,则需要安装ConsoleLogToWorkspace plugin。此插件将使您能够保存整个jenkins控制台日志。