hephaestus/.forgejo/workflows/build.yaml
Erich Blume fef0e82d26
All checks were successful
Build / validate (pull_request) Successful in 21m0s
ci: run build entirely through Dagger; drop prek from CI
The Forgejo k8s job image is a thin Alpine + Dagger orchestrator (no native
Rust/Neovim toolchain, no prek) with a DinD sidecar — so CI was failing on
step 1 (`prek: command not found`) on every run, and a native cargo hook
wouldn't work there either.

- build.yaml now runs `dagger call check` (cargo fmt/clippy/test on
  rust:1-bookworm) + `dagger call test-nvim` (build hephd + headless e2e).
- New Dagger `check` function; CARGO_BUILD_JOBS capped on both functions so
  parallel rustc on heavy crates doesn't OOM the build engine; cargo registry
  + target caches shared across runs.
- prek is intentionally not run in CI — it runs locally via git hooks.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-02 07:14:15 -07:00

37 lines
1.1 KiB
YAML

# Build Workflow
#
# CI validation, run entirely through Dagger. The Forgejo job image is a thin
# Alpine + Dagger orchestrator (no Rust/Neovim toolchain), so all build and test
# work happens in Dagger containers (.dagger/src/hephaestus_ci/main.py):
#
# - check — cargo fmt --check, clippy -D warnings, cargo test --all
# - test-nvim — build hephd + run the headless heph.nvim e2e suite
#
# prek is intentionally not run here — it runs locally via git hooks
# (`prek install`). Dagger uses the DinD sidecar; both functions share cargo
# cache volumes across runs.
name: Build
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
validate:
runs-on: k8s
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Rust checks (Dagger)
run: |
echo "Running cargo fmt/clippy/test via Dagger..."
dagger call check --src=.
- name: heph.nvim e2e (Dagger)
run: |
echo "Running headless heph.nvim e2e suite via Dagger..."
dagger call test-nvim --src=.