mirror of
https://github.com/block/buzz.git
synced 2026-08-18 06:50:31 +02:00
79 lines
2.1 KiB
Bash
79 lines
2.1 KiB
Bash
#!/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'
|