repo: the-eye kind: single image: git.oleks.space/oleks/nix-ci:latest-arm64 arch: arm64 git_host: git.oleks.space branches: [develop, staging, production] header: | # Build + push the EmDash app container (cluster #196, emmett#44). # # This is a keep-Dockerfile OCI web app (Astro/Node + native better-sqlite3, # built from app/package-lock.json) — it is NOT Nix-expressible on emmett, so # it stays on `docker buildx` against the in-cluster buildkit. The build logic # lives entirely in ci/local.sh so CI and a local run can't drift; this # pipeline is a thin wrapper that just sets the CI-specific env and invokes it. # # Tagging (handled by ci/local.sh) — every build publishes three refs: # 0.1. immutable, audit. # floating pointer Flux's ImagePolicy tracks (staging/ # production) → digest rewritten into the fleet repo → pod # rolls. Do not drop. # -latest same image; chart image.tag cosmetic fallback. # Only staging/production have an ImagePolicy, so only those move pods. label_comment: | kotkan (the deploy target) is an Oracle Ampere arm64 host, so we build natively on arm64 — no cross-compile needed. components: - name: build-and-push buildkit_comment: "CI builds natively on the in-cluster arm64 buildkit and publishes." version_comment: | Semver-shaped immutable tag, one per build. 0.1 is fixed (no real semver discipline yet); the patch is the monotonic pipeline number. - name: build-and-push-grpc component: grpc step_comment: | gRPC WorkspaceService image (#80). Same Dockerfile (the `grpc` target), same builder / registry / auth / tagging logic as the web build above — only --component grpc differs, which suffixes the published refs with -grpc (e.g. staging-grpc). Reuses the immutable per-pipeline $VERSION (0.1.), published as 0.1.-grpc.