Explorer
/opt/struktur/buzz/scripts/test-k8s-provider-release.sh
← Zurück ↓ Download
#!/usr/bin/env bash
# Reproduce the desktop release's multi-package build shape, then prove the
# Kubernetes provider reports an unreachable cluster in-band rather than
# panicking when rustls has multiple compiled crypto providers available.
set -euo pipefail

ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"

TARGET_DIR="${CARGO_TARGET_DIR:-$ROOT/target}"
PROVIDER_BINARY="$TARGET_DIR/release/buzz-backend-kubernetes"

CARGO="${CARGO:-cargo}"
"$CARGO" build --release \
  -p buzz-acp \
  -p buzz-agent \
  -p buzz-dev-mcp \
  -p git-credential-nostr \
  -p buzz-cli \
  -p buzz-backend-kubernetes

TMP="$(mktemp -d)"
trap 'rm -rf "$TMP"' EXIT
cat >"$TMP/kubeconfig" <<'YAML'
apiVersion: v1
kind: Config
clusters:
  - name: unreachable
    cluster:
      server: http://127.0.0.1:9
contexts:
  - name: unreachable
    context:
      cluster: unreachable
      user: none
current-context: unreachable
users:
  - name: none
    user: {}
YAML

cat >"$TMP/request.json" <<'JSON'
{
  "op": "deploy",
  "agent": {
    "relay_url": "wss://relay.example",
    "private_key_nsec": "nsec1vl029mgpspedva04g90vltkh6fvh240zqtv9k0t9af8935ke9laqsnlfe5",
    "auth_tag": "owner",
    "launch": {"command": "goose", "args": [], "env": {}, "policy_env": {}}
  },
  "provider_config": {
    "context": "unreachable",
    "namespace": "never-created",
    "image": "example.invalid/sprig@sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
    "inactivity_seconds": 60
  }
}
JSON

set +e
KUBECONFIG="$TMP/kubeconfig" \
  "$PROVIDER_BINARY" \
  <"$TMP/request.json" >"$TMP/stdout" 2>"$TMP/stderr"
status=$?
set -e

[[ "$status" == 0 ]] || {
  echo "provider exited $status instead of returning an in-band failure" >&2
  cat "$TMP/stderr" >&2
  exit 1
}
[[ "$(wc -l <"$TMP/stdout" | tr -d ' ')" == 1 ]]
jq -e '.ok == false and (.error | type == "string" and length > 0)' "$TMP/stdout" >/dev/null
if rg -i 'panic|crypto provider|no process-level' "$TMP/stdout" "$TMP/stderr"; then
  echo "provider emitted a panic/crypto-provider failure" >&2
  exit 1
fi
printf 'PASS: release-shaped provider returned one in-band unreachable-cluster failure\n'