Launch: CI runners on geek and jake-mini #20

Closed
opened 2026-10-02 01:38:36 +00:00 by jhgaylor · 1 comment
Owner

Blocks: #28 (and through it the control track)

Forgejo Actions has no runners yet. Register two and run just check on every push, so release builds (#21) have somewhere to run.

Decided 2026-10-01: geek (Linux x86_64) and jake-mini (macOS arm64).

  • forgejo-runner on geek as a systemd user service (host executor, or Docker with rustup + mise + pnpm in the image). Label it linux-x86_64.
  • forgejo-runner on jake-mini as a launchd agent (host executor: Xcode CLT, rustup, mise). Label it macos-arm64. Its clone lives in ~/src (the ~/dev drive is unmounted there).
  • .forgejo/workflows/check.yml: just check on Linux; build + cargo test on the Mac (this is the CI item open in #16).
  • Cache the cargo registry/target and the Zig/Ghostty build so a run isn't a cold libghostty build each time.
  • The tailnet-dependent tests (e2e-sandbox, wisp) stay manual; make sure just check doesn't need the tailnet or wispd.

Done when

  • A push to main shows green Linux and macOS checks on the commit.
**Blocks:** #28 (and through it the control track) Forgejo Actions has no runners yet. Register two and run `just check` on every push, so release builds (#21) have somewhere to run. Decided 2026-10-01: **geek** (Linux x86_64) and **jake-mini** (macOS arm64). - [ ] `forgejo-runner` on geek as a systemd user service (host executor, or Docker with rustup + mise + pnpm in the image). Label it `linux-x86_64`. - [ ] `forgejo-runner` on jake-mini as a launchd agent (host executor: Xcode CLT, rustup, mise). Label it `macos-arm64`. Its clone lives in `~/src` (the `~/dev` drive is unmounted there). - [ ] `.forgejo/workflows/check.yml`: `just check` on Linux; build + `cargo test` on the Mac (this is the CI item open in #16). - [ ] Cache the cargo registry/target and the Zig/Ghostty build so a run isn't a cold libghostty build each time. - [ ] The tailnet-dependent tests (`e2e-sandbox`, wisp) stay manual; make sure `just check` doesn't need the tailnet or wispd. ### Done when - A push to main shows green Linux and macOS checks on the commit.
Author
Owner

Done.

  • geek: forgejo-runner (host executor) as a user service, ~/.config/systemd/user/forgejo-runner.service, label linux-x86_64. MISE_NODE_VERSION=24 so actions/checkout finds Node.
  • jake-mini: forgejo-runner from Homebrew as a launchd agent, ~/Library/LaunchAgents/fyi.inevitable.forgejo-runner.plist, label macos-arm64. ProcessType must be Interactive: as Background (and Standard) launchd throttled it and a different daemon test timed out each run.
  • .forgejo/workflows/check.yml: just check + just check-macos + shellcheck + THIRD_PARTY.md current + gitleaks on Linux; just test on the Mac. Push and dispatch only, never pull requests (host runners on a public repo). The old ci.yml (ubuntu-latest, never had a runner, ran on PRs) is gone.
  • Builds are kept per runner in ~/.cache/illogical-ci/ (the justfile honours CARGO_TARGET_DIR).
  • Main is green on both.
Done. - geek: `forgejo-runner` (host executor) as a user service, `~/.config/systemd/user/forgejo-runner.service`, label `linux-x86_64`. `MISE_NODE_VERSION=24` so actions/checkout finds Node. - jake-mini: `forgejo-runner` from Homebrew as a launchd agent, `~/Library/LaunchAgents/fyi.inevitable.forgejo-runner.plist`, label `macos-arm64`. `ProcessType` must be **Interactive**: as Background (and Standard) launchd throttled it and a different daemon test timed out each run. - `.forgejo/workflows/check.yml`: `just check` + `just check-macos` + shellcheck + THIRD_PARTY.md current + gitleaks on Linux; `just test` on the Mac. Push and dispatch only, never pull requests (host runners on a public repo). The old `ci.yml` (ubuntu-latest, never had a runner, ran on PRs) is gone. - Builds are kept per runner in `~/.cache/illogical-ci/` (the justfile honours `CARGO_TARGET_DIR`). - Main is green on both.
Sign in to join this conversation.
No description provided.