From cc3e312e5282ce6c85c84d49ed4b3b92405df77b Mon Sep 17 00:00:00 2001 From: jedarden Date: Sat, 23 May 2026 23:49:49 -0400 Subject: [PATCH] =?UTF-8?q?Phase=208=20=E2=80=94=20Deployment=20+=20CI:=20?= =?UTF-8?q?Infrastructure=20complete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds completion summary for Phase 8 Deployment + CI. All infrastructure is in place and synced to declarative-config: - Dockerfile: scratch-based image with static musl binary - Argo WorkflowTemplate miroir-ci: full CI pipeline with lint, test, bench-check, musl build, Kaniko push, and GitHub release - Helm chart with values.schema.json enforcing HA requirements - ArgoCD applications for dev and production - Release scripts: bump-version.sh, release-ready-check.sh Verification pending: requires kubectl/helm access to iad-ci cluster. Co-Authored-By: Claude Opus 4.7 --- notes/miroir-qjt.md | 56 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 notes/miroir-qjt.md diff --git a/notes/miroir-qjt.md b/notes/miroir-qjt.md new file mode 100644 index 0000000..74a0a6e --- /dev/null +++ b/notes/miroir-qjt.md @@ -0,0 +1,56 @@ +# Phase 8 — Deployment + CI: Completion Summary + +## Infrastructure Implemented + +### Dockerfile +- `FROM scratch` with static musl binary +- OCI labels: source, version, revision, licenses=MIT +- Exposes 7700 (HTTP) and 9090 (metrics) +- Build expects `miroir-proxy-linux-amd64` from CI + +### CI/CD Pipeline (miroir-ci WorkflowTemplate) +- DAG: checkout → lint → test → bench-check → build → docker (tag-gated) → release (tag-gated) +- Uses `rust:1.87-slim` for cargo operations +- `x86_64-unknown-linux-musl` target for static binaries +- Kaniko for Docker builds to `ghcr.io/jedarden/miroir` +- GitHub releases with binaries + sha256 checksums +- Prerelease detection for `-rc.N` tags + +### Helm Chart (charts/miroir/) +- Templates: deployment, service, headless, configmap, secret, HPA, PVC, StatefulSet (meilisearch), serviceaccount +- Dev defaults: replicas=1, SQLite, RF=1, RG=1, HPA off +- values.schema.json enforces HA requirements (Redis with replicas>1, HPA requires Redis) +- Test suite validates schema rejections + +### ArgoCD Applications +- `miroir-ardenone-cluster`: Production config (2 replicas, Redis, Meilisearch HA) +- Syncs from `ghcr.io/jedarden/charts/miroir` + +### Release Mechanics +- `scripts/bump-version.sh`: Coordinated Cargo.toml + Chart.yaml version bumps +- `scripts/release-ready-check.sh`: Validates version consistency across Cargo.toml, Chart.yaml, CHANGELOG.md +- `CHANGELOG.md`: Keep a Changelog format with v0.1.0 section complete + +## Verification Status + +| DoD Item | Status | Notes | +|----------|--------|-------| +| CI pipeline completes on main | ⏳ Pending | Requires kubectl access to iad-ci | +| Tag push produces image + release | ⏳ Pending | Requires CI run | +| helm install works | ⏳ Pending | Requires helm CLI | +| values.schema.json tested | ⏳ Pending | Tests exist, need helm | +| Image ≤ 15 MB compressed | ⏳ Pending | Will verify on first build | +| ArgoCD app syncs cleanly | ⏳ Pending | Requires kubectl access | + +## Next Steps for Verification + +1. Submit workflow to iad-ci: `kubectl apply -f k8s/iad-ci/argo-workflows/miroir-ci.yaml` +2. Run smoke test: `kubectl create -f - < workflow-manual.yaml` +3. Tag v0.1.0-rc.1: `git tag v0.1.0-rc.1 && git push origin v0.1.0-rc.1` +4. Verify ghcr.io image and GitHub release +5. Test helm install: `helm install search charts/miroir --namespace search --wait` + +## Files Modified + +This phase created infrastructure files only; no source code changes. +All workflow templates and ArgoCD apps are synced to declarative-config.