如何在Azure DevOps中监控Azure Pipeline构建的固件ROM/RAM占用趋势?
解决方案:Azure DevOps 固件ROM/RAM占用监控与趋势展示
针对主保护分支构建的微控制器固件ROM/RAM占用监控需求,结合你已有的数据提取能力,以下是可行的落地方案,包含你提到的两种思路的具体操作,以及更高效的替代方案:
方案1:自定义JSON工件+Analytics报表(对应你提到的工件方案)
操作步骤:
- 生成结构化JSON数据:
脚本提取ROM/RAM后,生成包含关键维度的JSON文件,确保区分不同固件配置:{ "buildId": "$(Build.BuildId)", "branch": "$(Build.SourceBranchName)", "config": "Debug", "romUsage": 45600, "ramUsage": 8900 } - 发布构建工件:
在Pipeline中添加PublishBuildArtifacts任务,设置:- 工件名称:
MemoryUsageReports - 要发布的路径:JSON文件所在目录
- 发布位置:默认选择Azure Pipelines即可,无需额外配置
- 工件名称:
- 配置Analytics趋势报表:
- 进入Azure DevOps的Analytics模块,创建自定义报表,用Power Query连接到构建工件,读取JSON数据
- 按
config字段分组,筛选branch为main的记录,生成ROM/RAM的趋势图表 - 将图表添加到DevOps仪表板,实现可视化监控
- 分支过滤:
给发布工件的任务添加条件,仅在主分支执行:condition: eq(variables['Build.SourceBranch'], 'refs/heads/main')
方案2:利用测试结果系统(对应你提到的CTest思路)
这个方案完全可行,Azure Pipelines支持解析自定义JUnit格式的测试结果,自动收集测量值用于趋势分析:
操作步骤:
- 生成JUnit格式的测量文件:
无需实际运行CTest,直接生成包含ROM/RAM数据的JUnit XML,每个固件配置对应一个测试用例:<testsuite name="MemoryUsage" tests="2" failures="0"> <testcase name="Firmware-Debug" classname="MemoryMetrics"> <properties> <property name="ROM_Usage" value="45600"/> <property name="RAM_Usage" value="8900"/> </properties> </testcase> <testcase name="Firmware-Release" classname="MemoryMetrics"> <properties> <property name="ROM_Usage" value="38900"/> <property name="RAM_Usage" value="7600"/> </properties> </testcase> </testsuite> - 发布测试结果:
添加PublishTestResults任务,设置:- 测试结果格式:JUnit
- 测试结果文件路径:XML文件所在位置
- 配置仪表板趋势:
- 进入测试>分析页面,找到对应的
MemoryUsage测试套件,查看ROM/RAM属性的历史数据 - 在仪表板添加趋势图表部件,选择对应的测量属性,按
config分组,筛选主分支构建
- 进入测试>分析页面,找到对应的
- 分支过滤:
同样给发布任务添加主分支执行条件,避免非主分支数据干扰。
方案3:自定义Pipeline指标(推荐,最直接高效)
直接将ROM/RAM数据上报为Azure Pipelines的自定义指标,无需额外文件处理,原生支持趋势分析:
操作步骤:
- 上报指标:
在提取到ROM/RAM数据的脚本后,添加PowerShell/Bash任务,用Pipeline命令上报指标(区分不同配置):# 假设$romUsage、$ramUsage、$config为脚本输出的变量 Write-Host "##vso[task.logissue type=metric;name=ROM Usage ($config);value=$romUsage;]" Write-Host "##vso[task.logissue type=metric;name=RAM Usage ($config);value=$ramUsage;]" - 查看与可视化:
- 每次主分支构建完成后,在构建详情的指标标签页可看到实时数据
- 在仪表板添加指标趋势部件,选择对应的ROM/RAM指标,按配置分组,筛选主分支,即可生成趋势图表
- 分支过滤:
给上报指标的任务添加主分支执行条件,确保仅监控保护分支的构建数据。
内容的提问来源于stack exchange,提问作者Daniel Beliavskij
相关产品推荐
相关产品推荐

