Commit graph pcbjam/.github/workflows/ci-ubicloud.yml
Author SHA1 Message Date
Istvan Matejcsok
3ad33a10ca ci: 🎡 fix pcb firefox & queue ci runs 2026-06-17 08:56:03 +02:00
Istvan Matejcsok
5df7f40b3c ci: 🎡 -o1 & test workers 2026-06-16 14:46:18 +02:00
Istvan Matejcsok
e203c74a68 ci: 🎡 exclude -o2 and CI PRs 2026-06-16 14:46:18 +02:00
Viktor Vaczi
dcb8d69e91 ci(ubicloud): install web/ workspace so the collab bundle resolves @pcbjam/shared
The KiCad e2e collab specs rebuild apps/kicad/collab-bundle.js with esbuild
(collab/build.mjs), bundling web/standalone/src/wasm/collab/* and its
@pcbjam/shared import. That package is the web/pcbjam-shared submodule, resolved
through the web/ pnpm workspace — which CI never installed, so the build failed
with: [ERROR] Could not resolve "@pcbjam/shared". Install the web/ workspace
(links @pcbjam/shared + pulls the bundle's runtime deps zod/@ts-rest/core/yjs)
before the e2e step.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-14 08:37:57 +02:00
Viktor Vaczi
8dbca8a48b ci: fix stale build-wxuniversal-wasm.sh reference after rename
Commit 7dc1bf2 renamed scripts/build-wxuniversal-wasm.sh to
build-wx-wasm.sh but missed the CI workflow, so the "Build wxWidgets
(wxUniversal WASM)" step ran a script that no longer exists. Update the
run command in ci-ubicloud.yml plus the two stale comments referencing
the old name (ci-ubicloud.yml:43, scripts/common/stages.sh:7).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 19:50:23 +02:00
Istvan Matejcsok
e932530afb ci: Ubicloud is the main CI — retire the Hetzner VM workflows
ci-ubicloud.yml (cherry-picked from the ubicloud-ci experiment branch, green
on run 27375556034: 291 wx + 38 kicad tests in 1h52m) now triggers on main
pushes and replaces ci-full-build.yml and ci.yml. The Hetzner flow needed
create/delete-VM jobs, a PAT + hcloud token, and a shared one-slot
concurrency lock; the Ubicloud runner is a plain runs-on label and finished
faster end-to-end. wasm-opt-bench.yml stays (dispatch-only Hetzner bench
harness, unrelated to CI).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:43:15 +02:00
Istvan Matejcsok
c7e507ced6 ci(ubicloud): copy sysroot headers out of the docker volume for the GAL build
build-gal-webgl-test.sh compiles kicad headers that need boost from
build-wasm/sysroot/include — a host dir on dev machines but inside the
kicad-build-cache docker volume on CI (run 27370316200: ptr_vector.hpp not
found). The Makefile uses only $(SYSROOT)/include, so headers suffice.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:42:32 +02:00
Istvan Matejcsok
94e88a15d9 ci(ubicloud): build the GAL WebGL test app — 29 gal-webgl scenarios 404'd
First wx-suite run (27359020746): 262/262 non-GL tests passed; all 29
gal-webgl failures were galTest.isReady() timeouts because
gal_webgl_test.{js,wasm} are gitignored artifacts built by their own script
(build-gal-webgl-test.sh), which the workflow never ran — the page loaded
but the wasm 404'd. The script self-sources the local emsdk like
build-wasm-test.sh. Those 29 timeouts x3 attempts were also ~1.4h of the
1.7h e2e wall-clock.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:42:32 +02:00
Istvan Matejcsok
282994e2f2 ci(ubicloud): add the wxWidgets e2e suite to the run
Host-side wxUniversal build + wx test apps (build-wxuniversal-wasm.sh /
build-wasm-test.sh, mirroring the dispatch-only ci.yml) followed by
`npm run test` before the KiCad e2e. The wx suite runs on bundled headless
Chromium; several specs use WebGL (gal-webgl.spec.ts), so the chromium
project gains a CI-gated --enable-unsafe-swiftshader launch arg — without
it newer headless Chromium refuses software WebGL on the GPU-less runner.
First time this suite runs on a working CI runner; treat as experimental.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:42:32 +02:00
Istvan Matejcsok
3ce2684da8 ci(ubicloud): e2e step uses test:kicad:ci (firefox + chromium-ci projects)
Mirrors the main workflows for e913beb's pcbnew-on-Chromium routing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:42:32 +02:00
Istvan Matejcsok
c6a002bf2b ci(ubicloud): run kicad e2e under xvfb — headed firefox for software WebGL
Same rationale as the Hetzner workflow change in 3168eff: headless Firefox
cannot create any GL context on the GPU-less runner.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:42:32 +02:00
Istvan Matejcsok
775b657b89 fix(ci): ubicloud docker rejects cpus limit == host CPUs — cap at nproc-1
Run 27330725978 died at container create: "range of CPUs is from 0.01 to
30.00, as there are only 30 CPUs available" with KICAD_DOCKER_CPUS=30 on the
30-vcpu standard-30. The Hetzner box (fresh docker-ce) accepts cpus == nproc;
Ubicloud's preinstalled daemon doesn't. A 29/30 CFS quota is noise.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:42:32 +02:00
Istvan Matejcsok
2e1b261b98 ci: Ubicloud full build + e2e experiment — triggers only on ubicloud-ci
Same recipe as ci-full-build.yml (all 6 tools, Binaryen 130 from source,
pipelined wasm-opt, KiCad e2e) but on ubicloud-standard-30: a plain runs-on
label, so no create/delete-Hetzner-VM jobs and no shared one-slot concurrency
lock. Push-triggered ONLY on this branch (plus workflow_dispatch) so it never
competes with the Hetzner main CI.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-12 12:42:32 +02:00