[Feature] Stop building the example report twice on every pull request
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 8
- Forks
- 1
- Avg merge
- 18h 23m
- Merged PRs (30d)
- 63
Description
Several avoidable costs in per-PR and nightly wall-clock, in rough order of size.
The example report is built twice on every relevant pull request. preview.yml:29 and website-preview.yml:27 both call ./.github/workflows/example-report.yml as a reusable workflow, and their paths: filters overlap on report/**, src/**, website/**, pyproject.toml and uv.lock. Measured on PR #627: two example-report / Build example report checks at 8m0s and 7m54s, producing the same artifact and starting licensed products twice. (website.yml:27 also calls it, but only on push to main, so it does not contribute to the PR cost.) Building once and sharing the artifact would remove roughly eight minutes of duplicated licensed-product startup per PR.
Two workflows are missing the Playwright browser cache that the three smoke workflows already have. connect-smoke.yml, workbench-smoke.yml and packagemanager-smoke.yml each cache ~/.cache/ms-playwright; example-report.yml and connect-integration.yml do not, and re-download Chromium every run. example-report.yml is the more painful of the two because it runs on every relevant PR and already fights disk pressure with a free-disk-space step.
mock-idp-e2e.yml:152 builds the runner image with docker/build-push-action inside the matrixed job. The Dockerfile does not vary by Workbench version, so a three-leg scheduled or dispatch run builds the same image three times. The type=gha cache reduces but does not remove the cost, and PR/push runs are single-leg and unaffected.
13 of the 21 workflows have no concurrency block: add-to-team-project, ci, connect-smoke, copilot-setup-steps, docker, example-report, install-flow-smoke, linux-smoke, mac-smoke, packagemanager-smoke, pr-title, publish and workbench-smoke. Rapid pushes to a single PR branch therefore stack full, uncancelled runs, including ones that start real product containers. connect-integration.yml and mock-idp-e2e.yml already show the right pattern with cancel-in-progress: true keyed on github.ref. This should not be applied blanket: release.yml and security-audit.yml deliberately use cancel-in-progress: false because those runs must finish.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by comparing .github/workflows/preview.yml, website-preview.yml, example-report.yml, connect-integration.yml, and the smoke workflows' cache sections. Then inspect mock-idp-e2e.yml:152 and the listed workflows without concurrency blocks. Done means duplicated PR report builds, repeated browser downloads, redundant matrix image builds, and unwanted queued runs are reduced without changing the release or security-audit cancellation behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, github-actions, playwright
- Domain
- ci-cd, devops
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100