Files

40 lines
1.9 KiB
YAML

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.<pipeline> immutable, audit.
# <branch> floating pointer Flux's ImagePolicy tracks (staging/
# production) → digest rewritten into the fleet repo → pod
# rolls. Do not drop.
# <branch>-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.<n>),
published as 0.1.<n>-grpc.