feat: platform backbone and field capture, first part (checkpoint)
Platform backbone (plan 2026-10-13-plattform-rueckgrat), reviewed tasks: - run roles api/worker/job/all with shared startup checks (Task 1) - schema and migration for DomainEvent, deliveries, JobRun, ThrottlerHit (Task 2) - audit, notifications and domain events written in the same transaction (Task 3) - dispatcher with SKIP LOCKED claims, retries and stale release (Task 4) - worker building blocks: tick, LISTEN/NOTIFY wake-up, health (Task 5) - worker process and entry points (Task 6) - throttler counters in Postgres (Task 19) - separate keys per purpose with key ring (Task 20) - public origin page without exact location (Task 22) - shop keys split into read and write (Task 23) - Kustomize base, components, overlay encry, CI validation (Task 26) Field capture T3 (plan 2026-10-13-t3-erfassung-am-stand), reviewed tasks: - brood frames, read endpoints, apiary overview and offline pack - network basics, offline queue v3, navigation sheets, form building blocks - new inspection with last-time hints and weather, varroa per day, treatment prefill, apiary page with round - inspection photo (Task 10) is implemented, review pending Not rolled out. Remaining tasks follow in later commits. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
10cbe9bf2d
commit
c01a38835a
340 files changed
+25695
-1808
No files matched your search
@@ -54,7 +54,6 @@ jobs:
|
||||
with:
|
||||
images: ${{ env.REGISTRY_PUSH }}/${{ steps.image.outputs.name }}
|
||||
tags: |
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
type=sha,format=short
|
||||
type=semver,pattern={{version}}
|
||||
|
||||
|
||||
@@ -54,7 +54,6 @@ jobs:
|
||||
with:
|
||||
images: ${{ env.REGISTRY_PUSH }}/${{ steps.image.outputs.name }}
|
||||
tags: |
|
||||
type=raw,value=latest,enable={{is_default_branch}}
|
||||
type=sha,format=short
|
||||
type=semver,pattern={{version}}
|
||||
|
||||
|
||||
@@ -0,0 +1,74 @@
|
||||
name: Manifests
|
||||
|
||||
# Prueft deploy/k8s ohne Cluster-Zugriff: Overlay und jeden Rollout-Schritt
|
||||
# rendern, gegen die Kubernetes-Schemas validieren und die Regeln testen
|
||||
# (NetworkPolicies, Pod-Haertung, Ressourcen, CronJobs, Digests, Live-Selektoren).
|
||||
#
|
||||
# Bewusst kein pull_request-Trigger: der Runner laeuft im Cluster, und ein
|
||||
# Fork-PR braechte eigenen Code (auch eine geaenderte Fassung dieser Datei,
|
||||
# also ohne jeden if-Waechter) darauf zur Ausfuehrung. push setzt
|
||||
# Schreibrechte am Repo voraus; jeder Branch-Push wird geprueft, damit auch
|
||||
# Aenderungen vor dem Merge nach main durch die CI gehen.
|
||||
on:
|
||||
push:
|
||||
paths: ['deploy/k8s/**', '.gitea/workflows/manifests.yml']
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
validate:
|
||||
runs-on: docker-builder
|
||||
env:
|
||||
# Werkzeuge mit festen Versionen; jede Datei wird gegen ihre SHA-256 von
|
||||
# der offiziellen Release-Seite geprueft, bevor sie laeuft:
|
||||
# kubectl: https://dl.k8s.io/release/<v>/bin/linux/amd64/kubectl.sha256
|
||||
# kubeconform: CHECKSUMS im GitHub-Release yannh/kubeconform
|
||||
# yq: checksums (Spalte SHA-256) im GitHub-Release mikefarah/yq
|
||||
# Ein Update aendert Version und Pruefsumme zusammen.
|
||||
KUBECTL_VERSION: v1.36.5
|
||||
KUBECTL_SHA256: 33bc88a24c3b09cf55bfd59e6ca977881b61fc3f25ab65bc80c65b430248648e
|
||||
KUBECONFORM_VERSION: v0.8.0
|
||||
KUBECONFORM_SHA256: 9bc2bffbf71f261128533edaf912153948b7ff238f9a531ae6d34466ec287883
|
||||
YQ_VERSION: v4.53.6
|
||||
YQ_SHA256: c5f056448f973ae7d39b5401949648a78f2dc1947d6a8eb65be60d5c504b9385
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Node einrichten
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 22
|
||||
|
||||
- name: kubectl, kubeconform und yq laden
|
||||
run: |
|
||||
mkdir -p "$RUNNER_TEMP/bin"
|
||||
cd "$RUNNER_TEMP"
|
||||
curl -fsSLo kubectl "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl"
|
||||
echo "${KUBECTL_SHA256} kubectl" | sha256sum -c -
|
||||
curl -fsSLo kubeconform.tar.gz "https://github.com/yannh/kubeconform/releases/download/${KUBECONFORM_VERSION}/kubeconform-linux-amd64.tar.gz"
|
||||
echo "${KUBECONFORM_SHA256} kubeconform.tar.gz" | sha256sum -c -
|
||||
tar -xzf kubeconform.tar.gz kubeconform
|
||||
curl -fsSLo yq "https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_linux_amd64"
|
||||
echo "${YQ_SHA256} yq" | sha256sum -c -
|
||||
install -m 0755 kubectl kubeconform yq "$RUNNER_TEMP/bin/"
|
||||
|
||||
- name: Overlay rendern
|
||||
run: |
|
||||
"$RUNNER_TEMP/bin/kubectl" kustomize deploy/k8s/overlays/encry > "$RUNNER_TEMP/rendered.yaml"
|
||||
"$RUNNER_TEMP/bin/yq" ea -o=json '[.]' "$RUNNER_TEMP/rendered.yaml" > "$RUNNER_TEMP/rendered.json"
|
||||
|
||||
- name: Rollout-Schritte rendern
|
||||
# Runbook Schritte 1, 2, 3 und 5: Overlay mit den bis dahin
|
||||
# freigegebenen Komponenten (siehe render-stages.mjs).
|
||||
run: |
|
||||
export KUBECTL="$RUNNER_TEMP/bin/kubectl" YQ="$RUNNER_TEMP/bin/yq"
|
||||
node deploy/k8s/tests/render-stages.mjs "$RUNNER_TEMP/stages"
|
||||
|
||||
- name: Gegen Kubernetes-Schemas pruefen
|
||||
run: |
|
||||
"$RUNNER_TEMP/bin/kubeconform" -strict -summary "$RUNNER_TEMP/rendered.yaml" "$RUNNER_TEMP"/stages/*.yaml
|
||||
|
||||
- name: Regeln testen
|
||||
run: |
|
||||
export RENDERED_MANIFESTS="$RUNNER_TEMP/rendered.json" RENDERED_STAGES="$RUNNER_TEMP/stages/stages.json"
|
||||
node --test deploy/k8s/tests/manifest-policy.test.mjs
|
||||
Reference in new issue
Block a user