Commit Graph
4 Commits
Author SHA1 Message Date
Drew Newberry 88a5e338b2 feat(gateway): add libkrun microVM gateway for hardware-isolated cluster bootstrap
Introduce the navigator-gateway crate with safe Rust wrappers over the
libkrun C FFI, enabling lightweight microVM execution via Apple
Hypervisor.framework (macOS) or KVM (Linux).

Key components:
- navigator-gateway crate: KrunContextBuilder with RAII, ~15 FFI
  bindings, support for virtio-fs, console redirect, TSI control,
  and gvproxy virtio-net networking
- nav gateway run: ad-hoc microVM execution (direct enter model)
- nav gateway cluster: boots k3s inside a microVM with gvproxy
  networking, automatic rootfs extraction from Docker images, and
  port forwarding via gvproxy HTTP API
- vm-init.sh: guest bootstrap script with DHCP networking, noop CNI
  plugin (kernel lacks bridge module), and tmpfs-backed k3s data dir
- macOS codesigning with com.apple.security.hypervisor entitlement
  via auto-signing in scripts/bin/nav
- navigator-cli build.rs for libkrun/libkrunfw rpath resolution
2026-03-03 10:26:08 -08:00
Piotr Mlocek 96e9945cfd chore(ci): add Python wheel publishing + tag release in CI (!22)
## What changed

- Added tag-driven release flow in GitLab CI:
  - new `release` stage with tag-only jobs
  - `publish_tag_artifacts` publishes Docker + Python artifacts on `vX.Y.Z` tags
  - `create_release_notes` generates release notes from conventional commits via `git-cliff` and creates a GitLab release via `glab`
- Updated main-branch image publishing to version-aware tagging:
  - `publish_ecr_images` now runs `mise run publish:main`
  - main publishes `:dev`, `:latest`, and a versioned dev tag
- Added release-oriented mise tasks:
  - `publish:main`
  - `publish:tag`
  - `python:publish:macos` (manual macOS arm64 wheel publish)
- Switched Linux Python wheel builds to buildx:
  - added `deploy/docker/Dockerfile.python-wheels`
  - replaced old per-arch docker-run tasks with `python:build:multiarch`
- Added macOS arm64 wheel build path for local publishing:
  - `python:build:macos` builds `aarch64-apple-darwin`
  - intended to run locally on macOS after tag CI finishes
- Made Docker multiarch publish script tag-flexible:
  - `TAG_LATEST` is no longer hardcoded in ECR mode
  - supports `EXTRA_DOCKER_TAGS`
  - applies extra tags to sandbox/server/pki-job/cluster images
- Moved release tooling to `build/scripts/release.py` and updated all mise references
- Removed obsolete Docker Artifactory env vars from `mise.toml`

## Release behavior

- **Main branch CI**
  - Docker: `:dev`, `:latest`, and versioned dev tag
- **Tag CI (`vX.Y.Z`)**
  - Docker: `:X.Y.Z` only (no `:latest`)
  - Python: Linux wheels published from CI
  - GitLab release notes created from conventional commits
- **Manual macOS step (after tagging)**
  1. Checkout the tag locally on macOS
  2. Run `mise run python:publish:macos`

## Validation

- `mise run python:lint`
- `mise run version:print`
- `mise run python:build:macos`
- `uv run python build/scripts/release.py --help`
2026-02-13 12:13:04 -08:00
Piotr Mlocek eb1d67ba83 build: add publishing for docker images and python wheel 2026-02-05 19:27:42 -08:00
Drew Newberry b0a719df2d chore(platform): hello world, intial commit 2026-01-29 17:33:35 -08:00