Skip to content

CI: Lighthouse performance report (advisory, non-blocking) - #70

Merged
rivassec merged 2 commits into
mainfrom
lighthouse-ci-advisory
Sep 12, 2026
Merged

CI: Lighthouse performance report (advisory, non-blocking)#70
rivassec merged 2 commits into
mainfrom
lighthouse-ci-advisory

Conversation

@rivassec

Copy link
Copy Markdown
Owner

What

Adds a scheduled, advisory Lighthouse CI performance report. Two new files, no existing workflows or content touched:

  • .github/workflows/lighthouse.yml - weekly (cron: '17 6 * * 3', Wednesdays 06:17 UTC, offset from the other crons) + workflow_dispatch. Builds the site the same way deploy.yml / a11y-check.yml do (pip install --require-hashes --no-deps -r requirements.txt, then pelican content -o output -s publishconf.py), serves output/ with http-server on :8080, and runs @lhci/cli autorun.
  • lighthouserc.json - collects the homepage and a representative article (/cryptominer-in-the-docker-layer.html), 3 runs, desktop preset. All assertions are at warn level (categories:* plus generous LCP/CLS/TBT budgets), so normal runs pass.

Why it is NOT a merge gate

Lighthouse scores are noisy on shared GitHub-hosted runners - variable CPU throttling and cold caches routinely swing performance and TBT numbers run to run. Gating merges on that would produce flaky red checks that block unrelated content PRs. So this is deliberately a report, not a gate:

  • Every assertion is warn, so lhci exits 0 even on a budget miss.
  • The lhci step is continue-on-error: true (belt-and-suspenders against Chrome launch flakiness).
  • A regression surfaces as a job summary and a single tracking issue (label lighthouse), mirroring the single-issue pattern in link-rot.yml. It never fails the run.

Validation

  • python3 -c "import json; json.load(open('lighthouserc.json'))" -> OK; YAML parsed OK (ruby).
  • Only new files added; no other guard workflow is affected.
  • Could not run Lighthouse locally (no Chrome installed in this environment) - validity is YAML/JSON parse plus config reasoning. First scheduled/dispatch run on the runner will exercise it end to end.

rivassec added 2 commits September 11, 2026 19:30
Weekly scheduled + workflow_dispatch job that builds the site, serves
output/ locally, and runs Lighthouse CI against the homepage and a
representative article. All lighthouserc.json assertions are at warn
level and the job is continue-on-error, so budget misses surface as a
tracking issue (mirroring link-rot.yml) and a job summary rather than
blocking any merge. LH scores are noisy on shared runners, so this is a
health report, never a merge gate.
…ssue title

Critic follow-ups: avoid uploading each report to Google's public
temporary storage (use filesystem/.lighthouseci), and title the
tracking issue neutrally so a runner Chrome-launch failure is not
mislabeled as a budget warning.
@rivassec
rivassec merged commit 6801068 into main Sep 12, 2026
17 checks passed
@rivassec
rivassec deleted the lighthouse-ci-advisory branch September 12, 2026 02:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant