mirror of
https://github.com/dredx/prole.git
synced 2026-09-24 14:04:31 +00:00
- Add centralized config resolver/activator with per-environment layering and stable symlink entrypoint\n- Bootstrap missing env dirs and preserve non-symlink legacy prole.cfg by seeding into inferred env\n- Wire installer UI/backend + shell helpers to shared resolution path for explicit, safe env switching\n- Harden k3d: registry network/DNS wiring and ArgoCD repo-server hostPath permission init\n- Add docs + regression tests for env switching, namespace stability, k3d registry, and ArgoCD rollout Co-authored-by: Junie <junie@jetbrains.com>
112 lines
2.6 KiB
Bash
112 lines
2.6 KiB
Bash
#!/usr/bin/env bash
|
|
# Regression test: in k3d mode, init_registry.sh should derive K3D cluster name
|
|
# from the active kubectl context when K3D_CLUSTER_NAME is unset.
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
|
PROLE_HOME=$(cd "$SCRIPT_DIR/../.." && pwd)
|
|
ETC_DIR="$PROLE_HOME/etc"
|
|
SCRIPT_UNDER_TEST="$ETC_DIR/init_registry.sh"
|
|
|
|
TMP_DIR=$(mktemp -d)
|
|
trap 'rm -rf "$TMP_DIR"' EXIT
|
|
|
|
export PROLE_TEST_TMP_DIR="$TMP_DIR"
|
|
|
|
# Mock tools
|
|
cat > "$TMP_DIR/kubectl" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
LOG_DIR="${PROLE_TEST_TMP_DIR:-/tmp}"
|
|
|
|
if [[ "${1:-}" == "config" && "${2:-}" == "current-context" ]]; then
|
|
echo "k3d-knoe-system"
|
|
exit 0
|
|
fi
|
|
|
|
# If kubectl is being fed a manifest via stdin (e.g. `-f -`), consume it so
|
|
# upstream renderers don't fail with SIGPIPE under `set -o pipefail`.
|
|
for ((i=1; i<=$#; i++)); do
|
|
if [[ "${!i}" == "-f" ]]; then
|
|
j=$((i+1))
|
|
if [[ "${!j:-}" == "-" ]]; then
|
|
cat >/dev/null || true
|
|
break
|
|
fi
|
|
fi
|
|
done
|
|
|
|
echo "kubectl called with $*" >> "${LOG_DIR}/mock_calls.log"
|
|
exit 0
|
|
EOF
|
|
|
|
cat > "$TMP_DIR/docker" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
LOG_DIR="${PROLE_TEST_TMP_DIR:-/tmp}"
|
|
echo "docker called with $*" >> "${LOG_DIR}/mock_calls.log"
|
|
exit 0
|
|
EOF
|
|
|
|
cat > "$TMP_DIR/k3d" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
LOG_DIR="${PROLE_TEST_TMP_DIR:-/tmp}"
|
|
echo "k3d called with $*" >> "${LOG_DIR}/mock_calls.log"
|
|
exit 0
|
|
EOF
|
|
|
|
cat > "$TMP_DIR/curl" <<'EOF'
|
|
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
LOG_DIR="${PROLE_TEST_TMP_DIR:-/tmp}"
|
|
echo "curl called with $*" >> "${LOG_DIR}/mock_calls.log"
|
|
exit 0
|
|
EOF
|
|
|
|
chmod +x "$TMP_DIR/kubectl" "$TMP_DIR/docker" "$TMP_DIR/k3d" "$TMP_DIR/curl"
|
|
|
|
# Minimal prole.cfg
|
|
mkdir -p "$TMP_DIR/conf"
|
|
cat <<C_EOF > "$TMP_DIR/conf/prole.cfg"
|
|
[globals]
|
|
prole.home = $PROLE_HOME
|
|
prole.mode = k3d
|
|
[k3s]
|
|
server = https://localhost:6443
|
|
token = test-token
|
|
C_EOF
|
|
|
|
export PATH="$TMP_DIR:$PATH"
|
|
export PROLE_HOME="$PROLE_HOME"
|
|
export PROLE_CONF="$TMP_DIR/conf"
|
|
|
|
# Ensure we are testing kubectl-context based resolution.
|
|
unset K3D_CLUSTER_NAME
|
|
|
|
set +e
|
|
bash "$SCRIPT_UNDER_TEST" initialize >"$TMP_DIR/stdout" 2>"$TMP_DIR/stderr"
|
|
RC=$?
|
|
set -e
|
|
|
|
if [[ $RC -ne 0 ]]; then
|
|
echo "FAILURE: init_registry.sh exited $RC"
|
|
echo "--- stderr ---"
|
|
cat "$TMP_DIR/stderr" || true
|
|
exit 1
|
|
fi
|
|
|
|
if ! grep -q "docker called with network connect --alias k3d-prole-registry k3d-knoe-system k3d-prole-registry" "$TMP_DIR/mock_calls.log"; then
|
|
echo "FAILURE: expected registry network connect to target k3d-knoe-system network (derived from kubectx)"
|
|
echo "--- mock_calls.log ---"
|
|
cat "$TMP_DIR/mock_calls.log" || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "SUCCESS"
|