Files
aios/scripts/install_v1r1c0_gitops_model_overlay.sh
T

110 lines
4.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
PKG_ROOT="$(cd "$(dirname "$0")/.." && pwd)"
AIOS_GITOPS_ROOT="${AIOS_GITOPS_ROOT:-/data/aios-gitops}"
WORKSPACE="${AIOS_GITOPS_WORKSPACE:-$AIOS_GITOPS_ROOT/workspace}"
LOG_DIR="$AIOS_GITOPS_ROOT/logs"
BACKUP_DIR="$AIOS_GITOPS_ROOT/backups/pre-v1r1c0-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$LOG_DIR" "$BACKUP_DIR" "$WORKSPACE" "$AIOS_GITOPS_ROOT/runtime/secrets"
LOG="$LOG_DIR/install-v1r1c0-$(date +%Y%m%d-%H%M%S).log"
exec > >(tee -a "$LOG") 2>&1
echo "AIOS V1R1C0 GitOps + Custom LLM overlay installer"
echo "PKG_ROOT=$PKG_ROOT"
echo "AIOS_GITOPS_ROOT=$AIOS_GITOPS_ROOT"
echo "WORKSPACE=$WORKSPACE"
echo "== Preflight =="
hostname || true; date -Is; whoami; pwd; df -h || true; free -h || true; docker ps || true; docker compose version || docker-compose version || true; ss -lntp || true
echo "== Backup existing important paths =="
cp -a /data/agent "$BACKUP_DIR/data-agent" 2>/dev/null || true
cp -a /data/aios "$BACKUP_DIR/data-aios" 2>/dev/null || true
cp -a /opt/aios "$BACKUP_DIR/opt-aios" 2>/dev/null || true
cp -a /etc/systemd/system "$BACKUP_DIR/systemd-system" 2>/dev/null || true
echo "== Copy overlay files into GitOps root =="
mkdir -p "$AIOS_GITOPS_ROOT/adapters" "$AIOS_GITOPS_ROOT/scripts" "$AIOS_GITOPS_ROOT/artifacts" "$AIOS_GITOPS_ROOT/runtime"
rsync -a "$PKG_ROOT/adapters/" "$AIOS_GITOPS_ROOT/adapters/"
rsync -a "$PKG_ROOT/scripts/" "$AIOS_GITOPS_ROOT/scripts/"
rsync -a "$PKG_ROOT/config/" "$AIOS_GITOPS_ROOT/config/"
if [ ! -d "$WORKSPACE/.git" ]; then
echo "== Initialize workspace git repository from package content =="
rsync -a --delete --exclude 'source-baseline/*.zip' "$PKG_ROOT/" "$WORKSPACE/"
cd "$WORKSPACE"
git init
git config user.name "AIOS GitOps Bot"
git config user.email "gitops-bot@cnnetmkt.top"
git add .
git commit -m "init(baseline): import AIOS V1R1C0 multiuser gitops custom llm baseline" || true
git branch -M main
git tag -a V1R1C0 -m "AIOS V1R1C0 multiuser gitops custom llm baseline" || true
else
echo "== Existing workspace git repo found; overlay V1R1C0 files =="
rsync -a "$PKG_ROOT/docs/" "$WORKSPACE/docs/"
rsync -a "$PKG_ROOT/config/" "$WORKSPACE/config/"
rsync -a "$PKG_ROOT/migrations/" "$WORKSPACE/migrations/"
rsync -a "$PKG_ROOT/adapters/" "$WORKSPACE/adapters/"
rsync -a "$PKG_ROOT/scripts/" "$WORKSPACE/scripts/"
rsync -a "$PKG_ROOT/tests/" "$WORKSPACE/tests/"
cd "$WORKSPACE"
git add docs config migrations adapters scripts tests VERSION README.md || true
git commit -m "feat(gitops): add V1R1C0 multiuser custom LLM registry and runtime selector" || true
git tag -a V1R1C0 -m "AIOS V1R1C0 feature release" || true
fi
echo "== Token initialization =="
TOKEN_FILE="$AIOS_GITOPS_ROOT/runtime/secrets/gitops.tokens"
BARE_REPO="$AIOS_GITOPS_ROOT/runtime/gitea-bin/data/repositories/aios/aios-v23.git"
if [ ! -s "$TOKEN_FILE" ]; then
(openssl rand -hex 32 || python3 -c 'import secrets; print(secrets.token_hex(32))') > "$TOKEN_FILE"
chmod 600 "$TOKEN_FILE"
fi
echo "== Install systemd service for GitOps Model API =="
cat >/etc/systemd/system/aios-gitops-model-api.service <<EOF
[Unit]
Description=AIOS V1R1C0 GitOps Model API
After=network.target
[Service]
Type=simple
Environment=AIOS_GITOPS_ROOT=$AIOS_GITOPS_ROOT
Environment=AIOS_GITOPS_WORKSPACE=$WORKSPACE
Environment=AIOS_GITOPS_DB=$AIOS_GITOPS_ROOT/runtime/gitops_model.sqlite3
Environment=AIOS_GITOPS_TOKEN_FILE=$TOKEN_FILE
Environment=AIOS_GITOPS_BARE_REPO=$BARE_REPO
Environment=AIOS_GITOPS_HOST=127.0.0.1
Environment=AIOS_GITOPS_PORT=18890
ExecStart=/usr/bin/python3 $WORKSPACE/active-runtime/app/aios_chatgpt_actions_api.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now aios-gitops-model-api.service
sleep 1
systemctl status aios-gitops-model-api.service --no-pager || true
echo "== NPM reminder =="
cat <<'EOF'
Please configure existing Nginx Proxy Manager custom locations on cnnetmkt.top:
/git -> http://127.0.0.1:3000
/api -> http://127.0.0.1:18890/api
/base -> http://127.0.0.1:18890/base
/ver -> http://127.0.0.1:18890/ver
/diff -> http://127.0.0.1:18890/diff
/patch -> http://127.0.0.1:18890/patch
/run -> http://127.0.0.1:18890/run
/model -> http://127.0.0.1:18890/model
/hook -> existing OpenClaw/WebOps webhook, or 127.0.0.1:18891 if adapter is enabled
EOF
echo "== Local health check =="
curl -fsS http://127.0.0.1:18890/health || true
echo "AIOS_V1R1C0_INSTALL_DONE log=$LOG backup=$BACKUP_DIR"