Collect nightly Ubuntu Defold editor metrics for the latest successful dev build, commit generated SVG charts to this repo, and show them in README.md.
Track per Defold dev build:
- editor install size after download/unpack
- time to open project
- memory used after project open
- time to build the project
- additional memory used after build
- Use
defold/sample-pixel-line-platformerwhile developing the benchmark workflow for faster iteration. - Once signals and measurements are stable, switch the benchmark target to
defold/big-synthetic-project. - Validate every milestone through GitHub Actions using a local
scripts/ci.pydriver inspired by https://github.com/vlaaad/shlice/blob/main/ci.py. - Iterate by pushing temporary snapshot branches through that driver instead of relying on ad hoc local execution.
- Resolve the latest Defold alpha release that tracks
dev. - Download the Ubuntu/Linux editor archive and unpack it.
- inspect logs for project-open completion markers
- also watch
.internal/editor.portand the editor HTTP server as supporting signals
- trigger build via editor HTTP API
- use the blocking
/command/buildresponse as the build-finished signal - inspect logs around the build to extract timing and memory details if available
- prefer values emitted in editor logs if present and reliable
- otherwise sample process memory on Ubuntu as fallback
- Add a local
scripts/ci.pyhelper that snapshots the current worktree to a temp branch, waits for a GitHub Actions run, streams status, and downloads artifacts. - Resolve the latest Defold alpha release and download the Linux editor artifact.
- Download the benchmark project.
- Launch the editor in GitHub Actions on Ubuntu and measure open duration and memory after open.
- Trigger build through the editor HTTP API and measure build duration and memory delta after build.
- Store each result as structured temporal data keyed by Defold commit metadata.
- Generate SVG charts from the historical data using
commit_timeon the X axis. - Update
README.mdto embed the charts. - Commit changes back to the repo from the nightly workflow.
Store each sample with:
commit_shacommit_timerelease_tagplatformprojectinstall_size_bytesopen_time_msmemory_after_open_bytesbuild_time_msmemory_after_build_bytesmemory_added_by_build_bytes
Use commit_time as the canonical X-axis value for charts.
- Benchmark workflow:
- runs on push to temp branches and on manual dispatch
- benchmarks the editor
- uploads raw logs and structured metrics as artifacts
- is the primary target for validation through
scripts/ci.py
- Nightly workflow:
- runs on schedule
- benchmarks
big-synthetic-project - appends metrics history
- regenerates SVG charts
- commits updated data/charts/README
- should also be invokable through
scripts/ci.pyfor pre-schedule validation
.github/workflows/benchmark.yml.github/workflows/nightly.ymlscripts/ci.pyscripts/fetch_defold_build.*scripts/run_benchmark.*scripts/generate_charts.*data/metrics.csvcharts/*.svgREADME.md
- Use a single fixed GitHub Actions runner OS: Ubuntu.
- Local iteration should use
scripts/ci.py, which in turn usesghto drive CI runs on temp branches instead of ad hoc local execution. - The hardest part is identifying robust log-based open and memory signals.
- First implementation should focus on correctness, observability, and repeatability, then tighten timing and memory precision.
- Phase 1: CI bootstrap ✅
- add
scripts/ci.pymodeled aftershliceso local validation always goes through GitHub Actions - add
.github/workflows/benchmark.ymlfor Ubuntu, temp-branch pushes, and manual dispatch - resolve and download the latest Linux Defold editor and launch
sample-pixel-line-platformer - upload raw logs and minimal metadata artifacts even on failure
- validation: run
python scripts/ci.pyand confirm the workflow succeeds, the run URL is surfaced, and artifacts download locally
- add
- Phase 2: measurement stabilization ✅
- detect reliable project-open completion markers from logs and supporting readiness signals
- trigger builds through the editor HTTP API and measure build completion
- extract memory values from logs when possible, otherwise sample the process on Ubuntu
- emit one structured sample artifact per run
- validation: iterate with
python scripts/ci.pyuntil downloaded artifacts show stable, repeatable open/build/memory measurements
- Phase 3: persistence and charts ✅
- append or dedupe samples in
data/metrics.csvkeyed by Defold commit metadata - generate SVG charts with
commit_timeon the X axis - update
README.mdto embed generated charts - validation: run
python scripts/ci.pyand verify downloaded artifacts contain updated metrics data and chart outputs generated in GitHub Actions
- append or dedupe samples in
- Phase 4: nightly automation
- add
.github/workflows/nightly.ymlfor scheduled execution - switch the benchmark target to
defold/big-synthetic-projectonce signals are stable - benchmark, update history, regenerate charts, update
README.md, and commit changes from the nightly workflow - validation: invoke the nightly path through
scripts/ci.pybefore enabling or trusting the schedule, and verify reruns are idempotent
- add
- Add
scripts/ci.pyand prove it can validate a temp-branch workflow run. - Prove Ubuntu editor launch in CI.
- Collect and inspect logs for open/build markers and any memory reporting.
- Wire blocking build through the editor HTTP API.
- Record one sample for
sample-pixel-line-platformer. - Swap the benchmark target to
big-synthetic-project.