Unofficial automated services for three.js

("automated", all work-in-progress and wonky in Firefox)

The story so far: A watcher service polls the GitHub API looking for commits to the repository or open pull requests. Should a push event be detected, it gets split into its individual commits (if necessary) and re-pushed to a fork. This triggers a build pipeline on Microsoft's Azure cloud, resulting in two builds - one unmodified and one with source maps inlined.
While the unmodified one is used for regular syntax/code checks and linters, the type search and dependency management modules need the additional location data supplied by source maps.
The dependency tree gained from running the examples in a headless browser, crossed with a commit's diff, and more (simpler) heuristics ought to reduce run times while also minimizing storage space (very WIP).
Tests and checks are executed mostly in parallel, thanks to Azure's free 10 hosted workers. Given GitHub's recent public opening of GitHub Actions, with its even more generous 20 free workers, there might be a rewrite waiting for us in the future.
Stack: JavaScript with small bits of Bash, databases all SQLite, and workers by the aforementioned Azure and 3rd party servers. Formerly a (IMO glorious) mess of microservices, now much less so and soon to be replaced with Docker. VueJS for the frontend.

live.3ci.dev

Live testing (beta-ish)

The official three.js examples don't reference the actual individual source files in the core library, but rather include the transpiled & bundled version that - for now - still needs manual updating and committing. live rebuilds the library artifacts for every commit (dev branch & PRs) for easier testing.
Todo: Efficient paging, it's getting slightly out of hand

live.3ci.dev

ci.3ci.dev

CI with custom tests (alpha)

Currently runs various checks, linters, a frankly excessive type search and file-level dependency management. Lots of flaky tests that are highly tuned to the file- and code structure of the library. Fun.
Next: Increase dependencies tracking to function-level, then reduce runtime by only retesting modified functions.
And cleanup the frontend code, it could use a proper brushing.
Soon: Visual regression tests with Chrome's frame-precision render control, automated profiling(alpha) and automated performance alerts
Future: Given time and money, a fixed set of bare metal servers for more consistent measurements, maybe?

ci.3ci.dev

stats.3ci.dev

Stats and plots (planning stage)

Gotta make use of those 500+ MB of logs we're collecting per commit.