Skip to content

ci: P2 optimizations — split PR workflow, deduplicate lint, webpack cache#5006

Open
PascalThuet wants to merge 1 commit into
Dash-Industry-Forum:developmentfrom
PascalThuet:feature/ci-cd-p2-reuse-artifacts
Open

ci: P2 optimizations — split PR workflow, deduplicate lint, webpack cache#5006
PascalThuet wants to merge 1 commit into
Dash-Industry-Forum:developmentfrom
PascalThuet:feature/ci-cd-p2-reuse-artifacts

Conversation

@PascalThuet
Copy link
Copy Markdown
Contributor

@PascalThuet PascalThuet commented Apr 3, 2026

Summary

P2 improvements from #5004:

  • split verify_pull_request into 4 jobs: validate_and_unit_test, build_modern_artifact, build_legacy_bundle, and the functional test job
  • remove redundant ESLint from webpack.common.prod.cjs
  • add ci:verify and reuse it from both prebuild and the PR workflow
  • parallelize modern and legacy builds with concurrently
  • enable webpack filesystem cache in prod configs

Benchmarks

Observed on GitHub Actions fork PR runs:

  • P1 baseline (23946829247): verify_pull_request completed in 2m40s; merge_build_and_unit_test spent 2m22s in Build and run unit tests
  • This PR (23948490424): verify_pull_request completed in 2m15s; validate_and_unit_test spent 43s in validation, build_modern_artifact spent 52s building modern, and build_legacy_bundle spent 47s building legacy
  • Result: about 25s faster end-to-end on this fork PR run, while removing the redundant modern rebuild from the functional path

Validation Notes

  • validate_and_unit_test, build_modern_artifact, and build_legacy_bundle passed on PR ci: P2 optimizations — split PR workflow, deduplicate lint, webpack cache #5006
  • run_functional_test_single_stream_lambdatest was skipped because this PR is cross-repository (PascalThuet/dash.js -> Dash-Industry-Forum/dash.js) and the workflow guards on github.event.pull_request.head.repo.fork == false
  • I attempted to push the branch to Dash-Industry-Forum/dash.js to open a same-repo validation PR, but GitHub returned 403 Permission denied, so a maintainer-side branch/PR is still needed to exercise the non-skipped LambdaTest path

Test plan

  • validate_and_unit_test job passes
  • build_modern_artifact job produces and uploads dist-modern
  • build_legacy_bundle job completes after validation passes
  • Functional test job runs on LambdaTest from a same-repo PR

Refs #5004

🤖 Generated with Claude Code

…ck cache

- Split verify_pull_request into 4 jobs: validate_and_unit_test,
  build_modern_artifact, build_legacy_bundle, functional test.
  The functional job downloads the modern artifact instead of rebuilding.
- Remove EsLintWebpackPlugin from webpack prod configs (lint already runs
  in ci:verify via prebuild).
- Add ci:verify script and refactor prebuild to use it.
- Parallelize modern/legacy builds with concurrently.
- Enable webpack filesystem cache (cache: { type: 'filesystem' }).

Refs Dash-Industry-Forum#5004

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

2 participants