(pipelines): Add build performance observability pipeline#26316
(pipelines): Add build performance observability pipeline#26316
Conversation
There was a problem hiding this comment.
Pull request overview
This PR transforms a placeholder build performance observability pipeline into a functional monitoring solution. The pipeline collects build metrics from Azure DevOps REST APIs for both PR and internal builds, processes the data to generate comprehensive performance metrics, and deploys an interactive HTML dashboard to an Azure Static Web App.
Changes:
- Added daily cron schedules (2 AM UTC for PR builds, 3 AM UTC for internal builds) with logic to ensure each schedule runs in the correct project
- Implemented data collection via ADO REST APIs with parallel timeline fetching for performance
- Created metrics processing using jq to generate aggregated statistics, duration trends, and stage/task breakdowns
- Built an interactive dashboard with Chart.js visualizations, sortable tables, and tabbed navigation for PR vs internal builds
| displayName: Fetch timeline data for builds | ||
| condition: eq(variables['shouldRun'], 'true') | ||
| env: | ||
| ADO_API_TOKEN: $(System.AccessToken) |
There was a problem hiding this comment.
have you done a security review of the plan here. just want to ensure we are accuring any additional security debt by adding this all.
There was a problem hiding this comment.
I was working with @Abe27342 for security questions/concerns up until this point. Is there a formal security review this should go through?
|
Did you evaluate whether this repo or the internal ADO repo is a better fit for this to live in? |
@anthony-murphy yes, that was my original plan/preference. Unfortunately, internal ADO projects cannot access data from public ADO projects (security setting), so we would be unable to fetch PR data. I was also looking into an alternative using telemetry (instead of ADO REST APIs), but that added even more complexity/security issues. |
Description
This PR updates the placeholder pipeline added in #26299. The new pipeline does the following:
Note: The pipeline must run in the public and internal projects to fetch PR build data and internal build data, respectively.
Next Steps/Other Considerations
In the pipeline, there are large blocks of embedded HTML/JS/Bash code. We may want to consider factoring those into separate files.Create an aka.ms shortlink for the ASWApnpm buildlocally (separate page).Example Screenshot (Outdated)
Misc
AB#55451