如何从Jenkins控制台输出解析指定文本行并导出为CSV文件
Jenkins控制台指定日志提取生成两列CSV实现方案
核心思路
不用先落地存储全量控制台日志再二次处理,拉取日志时通过管道流式过滤、解析目标内容,直接生成符合格式要求的CSV文件,省磁盘空间处理速度也更快。
可直接复用的实现命令
在Jenkins的执行Shell步骤/Pipeline脚本中,替换原有全量保存日志的命令即可:
# 定义最终CSV输出路径 TARGET_CSV="${WORKSPACE}/RepoTestCaseCount.csv" # 写入CSV固定表头 echo "Repo_URL,Number_Of_Testfiles" > "$TARGET_CSV" # 拉取控制台输出,流式过滤解析后直接追加内容到CSV wget -q -O - "${BUILD_URL}/consoleText" | \ # 精准匹配固定格式的目标日志行,过滤所有无关输出 grep -E '^NumberOfTestCases in https://.* are [0-9]+$' | \ # 按固定空格分隔格式提取URL和用例数,拼接为标准CSV行 awk '{print $3","$5}' >> "$TARGET_CSV"
可选兼容优化
如果后续仓库URL中可能出现逗号、空格等CSV特殊字符,可以把awk命令替换为以下写法,给URL字段包裹双引号,符合通用CSV格式规范,避免用表格工具打开时出现列错位:
awk '{print "\""$3"\","$5}' >> "$TARGET_CSV"
命令逻辑说明
wget -q -O -:静默模式拉取控制台文本,直接输出到标准流,不会生成存储全量日志的临时文件- grep匹配规则:仅识别行结构完全匹配
NumberOfTestCases in <https开头URL> are <数字>的日志行,彻底过滤无关输出 - 字段提取逻辑:固定日志格式下按空格拆分后,第3个字段为仓库URL、第5个字段为对应用例数,直接拼接为CSV格式行即可
内容的提问来源于stack exchange,提问作者Manoj Kumar
相关产品推荐
相关产品推荐

