linux - 如何使用 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 命令从整个控制台日志中仅提取以上内容,或者以其他方式实现?
解决方案
您可以使用以下命令获取测试结果数据:
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
在终端上打印。
推荐阅读
- r - ggplot2中直方图的密度值?
- python - 添加代理后,Scrapy 代码不再有效
- forms - 尝试设计一个与 Venmo 和 PayPal 链接的订单
- pandas - 数据框显示每天的箱线图
- c# - 为什么 DirectoryNotFoundException 没有被 catch IOException 捕获
- javascript - 如何在 intl-tel-input 插件的下拉菜单中禁用所有国家/地区名称
- jinja2 - 如何在 dbt-jinja 中使用 python 正则表达式函数?
- outlook - 使用隐藏/编码文件夹路径创建电子邮件
- ios - 为什么本地通知没有触发
- nginx - Nginx - 将域转发到另一个 Nginx 服务器