Skip to content

feat(local): stock Dory integration + self-hosted smoke - #84

Merged
patrickleet merged 12 commits into
feat/cluster-backend-abstractionfrom
feat/dory-integration-v2
Jul 31, 2026
Merged

feat(local): stock Dory integration + self-hosted smoke#84
patrickleet merged 12 commits into
feat/cluster-backend-abstractionfrom
feat/dory-integration-v2

Conversation

@patrickleet

Copy link
Copy Markdown
Collaborator

Summary

  • Use stock Dory only (no hops fork, no dory k8s enable): product dory.sock, app-owned k3s (dory-k8s), desktop context hops-dory (optional --name / HOPS_DORY_NAME).
  • Package plane: in-cluster pull via Service DNS; engine-side push to {dory-k8s-ip}:30500 with TLS registry + CA wiring. Drop host-gateway / Colima sock theater.
  • HOPS_DORY_DESKTOP=0 drives sessions via DOCKER_HOST + KUBECONFIG only (no use-context / docker context mutation) — safe for a personal Mac runner.
  • Self-hosted dory smoke (runs-on: [self-hosted, macOS, ARM64, hops-dory], label test-dory): real engine, soft cleanup (no destroy/stop/rm k8s), path-based config install.
  • In-repo fixture tests/fixtures/config-smoke: hops config install --path … builds a minimal ConfigMap XR under namespace hops-ci.

Stacks on #70 (feat/cluster-backend-abstraction).

Test plan

  • cargo test --test dory_smoke_workflow (structural CI contract)
  • Local: stock Dory start + github provider path (prior session)
  • Local: hops config install --path tests/fixtures/config-smoke → ConfigSmoke Ready + ConfigMap smoke: ok
  • PR label test-dory + self-hosted runner ./run.sh on Apple Silicon with Dory engine + k8s + up on PATH
  • Confirm job does not switch host kube/docker defaults; soft-cleans hops-ci only

Notes

  • Public GHA cannot nest dory-hv; Colima-as-dory.sock was intentionally removed.
  • Big-Mac / UI “Recommended” 64 GB engine memory → HV_BAD_ARGUMENT documented in README; pin smaller memory in the Dory app.

Rebuild the dory backend around product k3s + an engine-side registry:
host push localhost:30500, cluster pull host.dory.internal:30500. Drop
ports/registries create-time files and in-cluster NodePort on dory.
Crossplane still installs the same; package pull address is backend-aware.
hops no longer calls dory k8s enable/disable or requires a scriptable
CLI. Users enable Kubernetes in the Dory app; hops starts a stopped
dory-k8s node, waits for Ready, and uses the engine package bridge.
Destroy/reset only remove the container via the engine docker socket.
Use product Dory only (dory.sock, hops-dory desktop, TLS registry push via
engine bridge). Add HOPS_DORY_DESKTOP=0 for env-only sessions that do not
mutate host kube/docker defaults.

Rewrite dory CI for self-hosted Apple Silicon (label hops-dory / test-dory):
no fork build, no Colima sock surrogate, soft cleanup only.

Add tests/fixtures/config-smoke and path-based hops config install in smoke
(namespaced ConfigMap under hops-ci).
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 949fb874-72e9-4df1-be98-bd570f61a1ff

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@patrickleet patrickleet added the test-dory Run the opt-in macOS Dory smoke test label Jul 31, 2026
…er images

Avoid Docker buildx InvalidBaseImagePlatform when `up project build` emits
both :amd64 and :arm64 function images and hops rebuilds the non-host arch
on Apple Silicon (or the reverse on Intel).
Pull with --platform for the host arch and re-materialize via docker build
so push does not warn about incomplete multiplatform content from the
upstream busybox:stable index.
Skip helm repo update/upgrade and bootstrap reapply when Crossplane,
k8s+helm providers, and the package registry are already Available.
Pass --bootstrap to force a full reconcile.

Kind smoke: drop stop/start resume; install up CLI and run the same
path-based config-smoke fixture as dory (namespaced ConfigMap).
The local package registry serves TLS; hosts.toml uses https:// + skip_verify.
Update the unit test that still asserted http:// after the TLS migration.
Avoid dumping host-wide docker/pods/doctor state that includes unrelated
workloads on a shared self-hosted machine.
… smoke

Doctor: for non-loopback push hosts (dory bridge IP) skip host curl and probe
via the engine docker network only — host curl hangs on TCP timeout.

Dory smoke: remove Swatinem/rust-cache; post-job cache save is slow and can
block on password with no TTY on a personal Mac runner.
Doctor probes non-loopback push hosts only via engine docker (explicit
~/.dory/dory.sock), avoiding ~75s host TCP timeout and host docker password
prompts. Remove Swatinem/rust-cache from dory smoke so post-job target/
upload no longer hangs the personal Mac runner.
Self-hosted Mac runners often have a dangling ~/.cargo/bin/cargo → rustup
shim. Prefer a real toolchain cargo so preflight and build succeed.
Drop set -x and host dumps (full PATH, docker info, readiness) so Actions
logs only show short status lines for the Dory preflight.
@patrickleet
patrickleet merged commit 7cca674 into feat/cluster-backend-abstraction Jul 31, 2026
4 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test-dory Run the opt-in macOS Dory smoke test

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant