m11p8 closes G-O + §1.4-3: - Cluster metrics: breaker state, forwards, self-heal on /metrics; multi-shard sibling render (shard="N") - Grafana cluster row + 8-rule Prometheus alert group - Request-id / TraceLayer on both cluster routers; id rides forward hop - Truthful status: flushed leader applied_events frontier; post-promote ShardId(0) keying fix - Self-driving heal: tick_self_heal re-arms stuck-peer backlog every ~3s - WAL PITR: wal.archive_dir, archive-before-delete gap-free - tidalctl backup/restore with BLAKE3 content-hash verification - Rolling-upgrade build_version handshake (N/N+1, never rejects) + Woodpecker release gate perf-sweep wave 2 T2: one-get-per-type pre-pass in ranking executor - signal_values.rs pre-fetches all signal kinds before scoring loop - Eliminates per-item repeated DashMap lookups: −18.8% for_you, −31% under writes - Byte-identical output verified with A/B test harness
41 lines
1.8 KiB
YAML
41 lines
1.8 KiB
YAML
# Pipeline: a rolling-upgrade RELEASE GATE (m11p8) runs FIRST; only if it passes
|
|
# does Kaniko build the tidal-server image and push it to the in-cluster zot
|
|
# registry. DEPLOYMENT IS MANUAL (kustomize, from the orchard9-k3sf ops repo) —
|
|
# the old auto-`kubectl set image deployment/tidaldb` step was removed because it
|
|
# coupled every image build to a standalone roll and the cluster ops repo's
|
|
# contract is "manual deploy via scripts, no CI/CD deploy". The same
|
|
# `tidal-server` binary serves every subcommand (standalone AND multi-process
|
|
# `cluster --region`), so one image covers both deployments.
|
|
when:
|
|
branch: main
|
|
event: push
|
|
|
|
steps:
|
|
# m11p8 release gate: prove a rolling upgrade under load loses no acknowledged
|
|
# write and never stalls (mp_rolling_upgrade_no_loss_no_stall — a tier-3 test
|
|
# spawning three real OS processes with a graceful SIGTERM → version-tagged
|
|
# restart → heal-until-converged → fixpoint cycle). Serial (--test-threads 1):
|
|
# the harness binds fixed ports and spawns real processes, so suites must not
|
|
# overlap. A failure here BLOCKS the image build below — the gate, not the start.
|
|
rolling-upgrade-gate:
|
|
image: rust:1-bookworm
|
|
commands:
|
|
- apt-get update && apt-get install -y --no-install-recommends protobuf-compiler cmake clang
|
|
- cargo test -p tidal-server --features cluster-e2e --test cluster_lifecycle
|
|
mp_rolling_upgrade_no_loss_no_stall -- --nocapture --test-threads 1
|
|
|
|
build:
|
|
image: woodpeckerci/plugin-kaniko
|
|
settings:
|
|
repo: tidal/server
|
|
dockerfile: docker/standalone/Dockerfile
|
|
context: .
|
|
tags:
|
|
- latest
|
|
- m8p10
|
|
- ${CI_COMMIT_SHA}
|
|
registry: registry.threesix.ai
|
|
build_args:
|
|
- TARGETPLATFORM=linux/amd64
|
|
extra_args: --customPlatform=linux/amd64
|