91 lines
3.4 KiB
Bash
Executable File
91 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# push_catalogs.sh — Push fresh catalogs to autobox iLSP volume AND copy to iLSP repo for Docker bake
|
|
#
|
|
# Usage:
|
|
# ./scripts/push_catalogs.sh # push all catalogs
|
|
# ./scripts/push_catalogs.sh --no-reload # push but don't call /reload
|
|
#
|
|
# Catalogs:
|
|
# bicep_modules_catalog.json — from DevOpsMCP repo (sync_bicep_modules.py)
|
|
# iac_source_catalog.json — from DevOpsMCP repo (sync_iac_module_sources.py)
|
|
# pipeline_templates_catalog.json — from iLSP repo (scripts/sync_pipeline_templates.py)
|
|
#
|
|
# All files are written to /opt/nomad/volumes/ilsp-data/ on autobox — the host volume iLSP mounts at /data.
|
|
# iac_source_catalog.json is also copied to the iLSP repo root so it gets baked into the Docker image.
|
|
|
|
set -euo pipefail
|
|
|
|
DEVOPS_MCP_REPO="${DEVOPS_MCP_REPO:-$HOME/Projects/DevOpsMCP}"
|
|
AUTOBOX="autobox.i80.dk"
|
|
REMOTE_DIR="/opt/nomad/volumes/ilsp-data"
|
|
HEALTH_URL="https://ilsp.i80.dk/health"
|
|
RELOAD_URL="https://ilsp.i80.dk/reload"
|
|
NO_RELOAD=false
|
|
|
|
for arg in "$@"; do
|
|
[[ "$arg" == "--no-reload" ]] && NO_RELOAD=true
|
|
done
|
|
|
|
# Catalog files to push
|
|
BICEP_CATALOG="$DEVOPS_MCP_REPO/bicep_modules_catalog.json"
|
|
IAC_CATALOG="$DEVOPS_MCP_REPO/iac_source_catalog.json"
|
|
ILSP_REPO="$(cd "$(dirname "$0")/.." && pwd)"
|
|
TMPL_CATALOG="$ILSP_REPO/pipeline_templates_catalog.json"
|
|
PRINCIPALS_CATALOG="$ILSP_REPO/principals_catalog.json"
|
|
|
|
echo "── iLSP catalog push ──────────────────────────────"
|
|
|
|
for f in "$BICEP_CATALOG" "$IAC_CATALOG"; do
|
|
if [[ ! -f "$f" ]]; then
|
|
echo " ✗ Not found: $f"
|
|
echo " Run: python3 $DEVOPS_MCP_REPO/scripts/sync_bicep_modules.py"
|
|
exit 1
|
|
fi
|
|
echo " ✓ $(basename "$f") ($(du -sh "$f" | cut -f1))"
|
|
done
|
|
|
|
if [[ ! -f "$TMPL_CATALOG" ]]; then
|
|
echo " ✗ Not found: $TMPL_CATALOG"
|
|
echo " Run: python3 $ILSP_REPO/scripts/sync_pipeline_templates.py"
|
|
exit 1
|
|
fi
|
|
echo " ✓ $(basename "$TMPL_CATALOG") ($(du -sh "$TMPL_CATALOG" | cut -f1))"
|
|
|
|
if [[ ! -f "$PRINCIPALS_CATALOG" ]]; then
|
|
echo " ✗ Not found: $PRINCIPALS_CATALOG"
|
|
echo " Run: python3 $ILSP_REPO/scripts/sync_principals_catalog.py"
|
|
exit 1
|
|
fi
|
|
echo " ✓ $(basename "$PRINCIPALS_CATALOG") ($(du -sh "$PRINCIPALS_CATALOG" | cut -f1))"
|
|
|
|
# Copy iac_source_catalog.json to iLSP repo root so it gets baked into the Docker image
|
|
echo ""
|
|
echo " → Copying iac_source_catalog.json to iLSP repo root (for Docker bake) …"
|
|
cp "$IAC_CATALOG" "$ILSP_REPO/iac_source_catalog.json"
|
|
echo " ✓ Copied to $ILSP_REPO/iac_source_catalog.json"
|
|
|
|
echo ""
|
|
echo " → Copying to $AUTOBOX:$REMOTE_DIR/ …"
|
|
ssh "$AUTOBOX" "mkdir -p $REMOTE_DIR"
|
|
scp "$BICEP_CATALOG" "$IAC_CATALOG" "$TMPL_CATALOG" "$PRINCIPALS_CATALOG" "$AUTOBOX:$REMOTE_DIR/"
|
|
echo " ✓ Upload done"
|
|
|
|
if [[ "$NO_RELOAD" == "true" ]]; then
|
|
echo " (skipping /reload — restart iLSP manually to apply)"
|
|
exit 0
|
|
fi
|
|
|
|
echo ""
|
|
echo " → Calling $RELOAD_URL …"
|
|
if response=$(curl -sf -X POST "$RELOAD_URL" 2>/dev/null); then
|
|
echo " ✓ $response"
|
|
else
|
|
echo " ✗ /reload failed (is ilsp.i80.dk reachable? try: curl https://ilsp.i80.dk/health)"
|
|
echo " Catalogs are on disk — they'll be used on next restart."
|
|
exit 1
|
|
fi
|
|
|
|
echo ""
|
|
echo " Done. Bicep + YAML pipeline template + principals completions updated."
|
|
echo " Note: iac_source_catalog.json was copied to repo root — commit + push to bake into next Docker image."
|