Skip to content

Replace local CI orchestration with GitHub Actions#497

Closed
srid wants to merge 15 commits intomasterfrom
better-volley
Closed

Replace local CI orchestration with GitHub Actions#497
srid wants to merge 15 commits intomasterfrom
better-volley

Conversation

@srid
Copy link
Copy Markdown
Member

@srid srid commented Apr 13, 2026

CI now runs via GitHub Actions on self-hosted runners instead of the
hand-rolled SSH + git-bundle dispatch in ci/lib.just. Each runner is
labeled with its Nix system name (x86_64-linux, aarch64-darwin), and
the workflow DAG mirrors the existing step dependencies.

The ~210-line ci/lib.just library (signoff, guard, SSH host resolution,
colored prefix output, summary table, context extraction) is deleted
entirely — GitHub Actions provides all of this natively. ci/mod.just
becomes a thin set of bare recipes so just ci still works for local
debugging when a GHA job fails. The APM CI skill is rewritten to match
the new GHA-based workflow.

GHA status

5/6 jobs pass: local-checks, nix (both systems), home-manager, e2e (aarch64-darwin).
e2e (x86_64-linux) fails — Playwright's Chromium crashes on the NixOS
runner (browser.newContext: Target page, context or browser has been closed).
The binary works locally and on macOS; this is a runner-specific environment
issue that needs investigation on the dosa machine.

srid added 11 commits April 13, 2026 14:11
Delete ci/lib.just (~210 lines of SSH dispatch, GitHub commit status
posting, guard checks, summary tables) and simplify ci/mod.just to
bare recipes. Add .github/workflows/ci.yaml with self-hosted runners
labeled x86_64-linux and aarch64-darwin, mirroring the existing step
dependency graph.

`just ci` still works locally for debugging GHA failures.
Unit tests need git author identity (git.test.ts worktree tests) and
the hostname command (shell.test.ts OSC7 tests). Both were available
in the old SSH-based CI environment but missing on GHA runners.
Playwright's Chromium crashes immediately on headless NixOS runners
without a virtual framebuffer. Start Xvfb before e2e tests and export
DISPLAY=:99 so Chromium can launch.
apm-sync uses uvx which isn't on the GHA runner's PATH. Add uv to
shell.nix and wrap the ci::apm-sync recipe in nix_shell so uvx is
available when running outside a nix develop session.
Playwright's Chromium crashes on headless NixOS runners without a
display server. Wrap e2e tests with xvfb-run on Linux (no-op on macOS).
Add xvfb-run and uv to shell.nix so both are available in nix develop.
APM now generates instructions, skills, hooks, and prompts under
.github/ (for Copilot and other GitHub-native agents). These were
missing from the repo, causing apm-sync to fail on CI.
@srid srid closed this Apr 13, 2026
@srid srid reopened this Apr 13, 2026
srid added 4 commits April 13, 2026 14:34
xvfb-run is not available on macOS — gate it behind isLinux.
Use exec so xvfb-run replaces the shell process, and --auto-servernum
to pick an available display number. Also skip xvfb-run if DISPLAY is
already set (e.g. developer running locally with a display).
@srid srid closed this Apr 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant