pcbjam/.github/workflows
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Gergő Törcsvári 913bc90fa0
ci: single build recipe (reusable) + ordered tag release pipeline; two-tier opt cache
Fixes two coupled bugs: (1) a tag deployed the demo by snapshotting the STALE registry with no build/publish, so v0.1.1 shipped v0.1.0-era wasm; (2) publish-wasm built -O1/3D-off while ci-ubicloud built -O1/3D-on — two diverging recipes.

wasm-build.yml (reusable workflow_call): THE single build+test recipe, parameterized by opt_level / build_3d_viewer / run_tests / no_cache / upload_output. Two-tier output cache around build.sh's new --compile-only/--postprocess-only split: a BASE cache keyed opt-INDEPENDENTLY (compile output + sysroot headers, shared across -O1/-O2) and a FINAL cache keyed opt-SPECIFICALLY. final-hit ⇒ skip all; final-miss+base-hit ⇒ restore base, run only the asyncify/-O tail; full-miss ⇒ compile then postprocess. Both keys now include the 3D flag, closing the cache-poisoning divergence.

ci-ubicloud.yml: thin caller (main/PR/dispatch) → wasm-build at -O1. release.yml (tag v*): meta → build (wasm-build at -O2 + e2e gate, uploads output, reuses main's base cache so only the -O2 tail rebuilds) → publish-wasm (content-addressed push + manifest-<tag>.json) → deploy-demo (build-demo pinned to that manifest + libs/kicad/$LIB_TAG → Pages). So the shipped build is exactly the tested build, and the demo can never point at stale wasm.

deploy-demo.yml: demoted to manual dispatch-only re-deploy (keeps the --from-registry snapshot for re-shipping an already-published tag). publish-wasm.yml: deleted (folded into release.yml + wasm-build.yml).

Validated: actionlint clean (bar the known ubicloud custom-label note), YAML + needs-graph + reusable-path checks pass. NOT runtime-tested — the build can't run locally; needs a CI smoke (a PR exercises ci-ubicloud→wasm-build; a throwaway tag exercises release.yml) before relying on it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-22 16:23:33 +02:00
..
ci-ubicloud.yml ci: single build recipe (reusable) + ordered tag release pipeline; two-tier opt cache 2026-06-22 16:23:33 +02:00
deploy-demo.yml ci: single build recipe (reusable) + ordered tag release pipeline; two-tier opt cache 2026-06-22 16:23:33 +02:00
publish-libs.yml feat(deploy): publish-libs CI + full clone (C1.3) 2026-06-20 12:47:38 +02:00
release.yml ci: single build recipe (reusable) + ordered tag release pipeline; two-tier opt cache 2026-06-22 16:23:33 +02:00
wasm-build.yml ci: single build recipe (reusable) + ordered tag release pipeline; two-tier opt cache 2026-06-22 16:23:33 +02:00
wasm-opt-bench.yml ci: ephemeral Hetzner CI — full build + e2e on main push, all else dispatch-only 2026-06-11 07:50:47 +02:00