Conversation
The Tilt-based local stack lives in the sibling platzio/dev repo now and
supersedes docker-compose plus the run-{api,db,oidc}.sh helpers. Drop
them and the related dex config / buildkitd config / container-build.sh.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Local development now lives in the sibling platzio/dev repo (Tilt + kind). Replace the long Tilt walkthrough with a short pointer there. Keep the genuine backend-doc updates: add platz-resource-sync to the crate list and description, document the PLATZ_CLUSTER_PROVIDER (eks/local) and PLATZ_REGISTRY_PROVIDER (ecr/oci) knobs, note OIDC_* / ADMIN_EMAILS for platz-api, and drop the orphaned Terraform section. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Introduce a HelmRegistryProvider enum (Ecr | Oci, defaults to Ecr for backwards compat) and surface it on HelmRegistry / NewHelmRegistry. region_name() now returns Option<String> since the AWS-region-in-domain trick only applies to ECR. Foundation for both the chart-discovery OCI poller and the helm pod's conditional `aws ecr get-login-password`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
PLATZ_REGISTRY_PROVIDER selects between `ecr` (default, watches an SQS queue fed by ECR push/delete events) and `oci` (polls a generic OCI registry — Docker Distribution, zot, etc. — over HTTP). The OCI poller walks the registry's `/v2/_catalog` and per-repo tag listings, filters to helm-config-media-type artifacts, downloads each chart with `helm pull`, and inserts a HelmRegistry / HelmChart row tagged with HelmRegistryProvider::Oci. ECR config fields (queue + region) are now optional and only required when provider=ecr. add_helm_chart was split into an ECR-specific download path plus a provider-agnostic record_helm_chart so the OCI poller can reuse the row insertion logic. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The helm pod's bootstrap script unconditionally ran `aws ecr get-login-password` and exported HELM_REGISTRY_REGION, which fails for generic OCI registries that aren't backed by ECR. Gate the login step on HelmRegistryProvider::Ecr and only inject HELM_REGISTRY_REGION when HelmRegistry::region_name() yields a value. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
PLATZ_CLUSTER_PROVIDER selects between `eks` (default, scans every AWS region for EKS clusters) and `local` (registers a single cluster from a kubeconfig context). In `local` mode the agent picks the context from PLATZ_LOCAL_CONTEXT or the kubeconfig's current-context, derives a synthetic provider_id (`local:<ctx>`), and writes a row through the same `Cluster::find_or_create_*` path EKS discovery uses. Side car: PLATZ_DISABLE_DEPLOYMENT_CREDENTIALS is now read from the environment in addition to the CLI flag, so the local helm chart values can flip it on without a custom command line. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Restructure the build around cargo-chef so dep compilation is its own cacheable layer that survives source edits. The builder stage now selects the musl target from TARGETARCH (amd64 → x86_64-unknown-linux-musl, arm64 → aarch64-unknown-linux-musl) and writes binaries into a per-arch cache mount, so amd64 and arm64 native runners can build in parallel without fighting over the same target dir. Drop the scripts/container-build.sh detour (already deleted) and the common `apt install musl-tools` stage; everything lives in the Dockerfile now. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Adds a `dev` build target that keeps cargo + workspace source in the runtime image, so Tilt's live_update can re-run `cargo build` inside the running container after syncing edited files. No cache mount on the build step — the warm /build/target dir is baked into the resulting image, which trades image size for a fast first incremental rebuild after `tilt up`. The dev stage isn't referenced by any other stage, so `docker build` without `--target` keeps producing the musl-static release image unchanged. The Tiltfile in platzio/dev explicitly passes `--target=dev`. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Build amd64 and arm64 images in parallel on their respective native runners (ubuntu-latest, ubuntu-24.04-arm) instead of cross-compiling under QEMU. Each matrix job pushes its image by digest into Docker Hub (scope-tagged GHA cache per arch), and a follow-up `merge` job stitches the digests into a multi-arch manifest list under the release tag. PR builds only validate (no push, no login). Drop the QEMU and buildkitd-config setup; the latter referenced the deleted .github/buildkitd.toml. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Establishes a full local development workflow for Platzio with no AWS dependency. Wires the workers to support non-AWS providers and ships the dev harness as a sibling repo (
platzio/dev) driven by Tilt + kind.Commit-by-commit
Test plan
🤖 Generated with Claude Code