首页 > 解决方案 > 如何使用 Linux 命令在 Jenkins 控制台中提取 testNG 结果

问题描述

我正在尝试从 Jenkins 控制台中提取触发 Jenkins 作业和 testNG 执行状态的用户。

需要使用 Linux 命令从 Jenkins 控制台获取以下详细信息。

詹金斯控制台日志:

由用户achuMohan 发起

================================================

TransferMoneyTest

测试运行:10,通过:5 失败:3,跳过:2

================================================

输出:

achuMohan
Run:10
Pass:5
Failures:3
Skips: 2

我尝试了以下命令来获取所有控制台日志,但不确定如何进一步进行。

userName=$(curl -u 'user:password' --silent "https://hostname/Dev-CI-MILLENIUM-1924/job/Test_Kindle/$BUILD_NUMBER/logText/progressiveText?start=0")

Pass=$(curl -u 'user:password' --silent "https://hostname/Dev-CI-MILLENIUM-1924/job/Test_Kindle/$BUILD_NUMBER/logText/progressiveText?start=0")

Fail=$(curl -u 'user:password' --silent "https://hostname/Dev-CI-MILLENIUM-1924/job/Test_Kindle/$BUILD_NUMBER/logText/progressiveText?start=0")

skip=$(curl -u 'user:password' --silent "https://hostname/Dev-CI-MILLENIUM-1924/job/Test_Kindle/$BUILD_NUMBER/logText/progressiveText?start=0")

我想获取上面的输出并将其存储到变量中,就像上面一样。

是否可以通过使用 linux 命令从整个控制台日志中仅提取以上内容,或者以其他方式实现?

标签: linuxcurllinux-kernelcommand-line-interface

解决方案


您可以使用以下命令获取测试结果数据:

curl -u 'user:password' --silent "${JENKINS_URL}/job/${JOB_NAME}/lastBuild/consoleText"| grep "^Tests"| sed "s/Tests //g"| awk -F", " '{ print $1"\n"$2"\n"$3}'

上述命令的输出将是:

run: 10
Pass: 5
Failures: 3

对于用户名,您可以使用以下命令:

curl -u 'user:password' --silent "${JENKINS_URL}/job/${JOB_NAME}/lastBuild/consoleText" | awk '/Started/{print $NF}'

这将给出输出:

achuMohan

您可以将这些数据放入文件中,然后用于cat在终端上打印。


推荐阅读