buildia viilattu
This commit is contained in:
@@ -3,10 +3,8 @@
|
||||
# --- Vaihe 1: Frontend (Astro) ---
|
||||
FROM node:22-slim AS frontend
|
||||
WORKDIR /app/frontend
|
||||
# Riippuvuudet ensin → cache-kerros (muuttuu harvoin)
|
||||
COPY frontend/package.json frontend/package-lock.json* ./
|
||||
RUN npm install --silent
|
||||
# Lähdekoodi → muuttuu usein, mutta npm install on cachessa
|
||||
COPY frontend/ .
|
||||
RUN npm run build
|
||||
|
||||
@@ -18,7 +16,6 @@ WORKDIR /app
|
||||
COPY Cargo.toml Cargo.lock* ./
|
||||
COPY node/Cargo.toml node/Cargo.toml
|
||||
COPY node/src node/src
|
||||
# Dummy-cratet jotta workspace Cargo.toml on tyytyväinen
|
||||
COPY hub/Cargo.toml hub/Cargo.toml
|
||||
COPY native-node/Cargo.toml native-node/Cargo.toml
|
||||
COPY cli/Cargo.toml cli/Cargo.toml
|
||||
@@ -34,7 +31,6 @@ WORKDIR /app
|
||||
COPY Cargo.toml Cargo.lock* ./
|
||||
COPY hub/Cargo.toml hub/Cargo.toml
|
||||
COPY hub/src hub/src
|
||||
# Tarvitaan dummy-cratet jotta workspace kompiloi
|
||||
COPY node/Cargo.toml node/Cargo.toml
|
||||
COPY native-node/Cargo.toml native-node/Cargo.toml
|
||||
COPY cli/Cargo.toml cli/Cargo.toml
|
||||
@@ -49,14 +45,11 @@ FROM debian:bookworm-slim
|
||||
RUN apt-get update && apt-get install -y ca-certificates && rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY --from=hub-builder /usr/local/bin/hub /usr/local/bin/hub
|
||||
# Astro dist sisältää kaiken: HTML, JS, avatars, templates, download, GUIDE.md
|
||||
COPY --from=frontend /app/frontend/dist /app/frontend/dist
|
||||
# Wasm-paketti staattisena
|
||||
COPY --from=wasm-builder /app/wasm-pkg /app/frontend/dist/pkg
|
||||
|
||||
# Kopioidaan GUIDE.md ja templates
|
||||
COPY frontend/public/GUIDE.md /app/frontend/dist/GUIDE.md
|
||||
COPY frontend/public/templates /app/frontend/dist/templates
|
||||
COPY frontend/public/avatars /app/frontend/dist/avatars
|
||||
|
||||
WORKDIR /app
|
||||
ENV STATIC_DIR=/app/frontend/dist
|
||||
EXPOSE 3000
|
||||
|
||||
@@ -3,11 +3,12 @@
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
echo "=== Kipinä Studio Deploy (+ native binäärit) ==="
|
||||
|
||||
# Käännetään native-node-binäärit (ohittaa automaattisesti jos ei muutoksia)
|
||||
"$SCRIPT_DIR/build-binaries.sh"
|
||||
# 1. Käännetään native-node-binäärit (ohittaa automaattisesti jos ei muutoksia)
|
||||
./build-binaries.sh
|
||||
|
||||
# Ajetaan normaali deploy
|
||||
exec "$SCRIPT_DIR/deploy.sh"
|
||||
# 2. Ajetaan normaali deploy
|
||||
exec ./deploy.sh
|
||||
|
||||
@@ -8,12 +8,14 @@ if [ "$1" == "local" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
SERVER="ubuntu@86.50.252.98"
|
||||
REMOTE_DIR="~/code/agentic-studio/network-poc"
|
||||
KEY="$HOME/.ssh/id_rsa"
|
||||
SSH_OPTS="-o StrictHostKeyChecking=no -i $KEY"
|
||||
|
||||
# Varmistetaan, että SSH-avain on agentissa
|
||||
if ! ssh-add -l 2>/dev/null | grep -q id_rsa; then
|
||||
echo "SSH-avain ei ole agentissa. Lisätään..."
|
||||
ssh-add "$KEY"
|
||||
@@ -22,47 +24,43 @@ fi
|
||||
echo "=== Kipinä Studio Deploy ==="
|
||||
|
||||
# 0. Commitoidaan uncommitted muutokset ennen deployta
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
if ! git -C "$SCRIPT_DIR" diff --quiet HEAD 2>/dev/null || \
|
||||
[ -n "$(git -C "$SCRIPT_DIR" ls-files --others --exclude-standard 2>/dev/null)" ]; then
|
||||
if ! git diff --quiet HEAD 2>/dev/null || \
|
||||
[ -n "$(git ls-files --others --exclude-standard 2>/dev/null)" ]; then
|
||||
echo "[0] Uncommitted muutoksia havaittu — commitoidaan..."
|
||||
read -rp " Commit-viesti: " DEPLOY_MSG
|
||||
if [ -z "$DEPLOY_MSG" ]; then
|
||||
DEPLOY_MSG="Deploy $(date +%Y-%m-%d\ %H:%M)"
|
||||
fi
|
||||
git -C "$SCRIPT_DIR" add -A
|
||||
git -C "$SCRIPT_DIR" commit -m "$DEPLOY_MSG"
|
||||
git add -A
|
||||
git commit -m "$DEPLOY_MSG"
|
||||
echo " Commitoitu: $DEPLOY_MSG"
|
||||
fi
|
||||
|
||||
# 1. Rakennetaan Docker-image lokaalisti
|
||||
echo "[1/4] Rakennetaan image lokaalisti..."
|
||||
# 1. Docker-image (frontend + hub + wasm)
|
||||
echo "[1/4] Rakennetaan image..."
|
||||
docker build --platform linux/amd64 -f Dockerfile.prod -t kipina-agentic:latest .
|
||||
|
||||
# 2. Tallennetaan tiedostoon
|
||||
# 2. Pakataan
|
||||
echo "[2/4] Pakataan image..."
|
||||
docker save kipina-agentic:latest | gzip > /tmp/kipina-agentic.tar.gz
|
||||
echo " Koko: $(du -h /tmp/kipina-agentic.tar.gz | cut -f1)"
|
||||
|
||||
# 3. Siirretään palvelimelle
|
||||
# 3. Siirretään
|
||||
echo "[3/4] Siirretään palvelimelle..."
|
||||
scp $SSH_OPTS /tmp/kipina-agentic.tar.gz $SERVER:/tmp/
|
||||
scp $SSH_OPTS docker-compose.prod.yml Caddyfile.prod $SERVER:$REMOTE_DIR/
|
||||
|
||||
# 4. Ladataan image ja käynnistetään
|
||||
echo "[4/4] Ladataan image palvelimella..."
|
||||
# 4. Käynnistetään
|
||||
echo "[4/4] Käynnistetään palvelimella..."
|
||||
ssh $SSH_OPTS $SERVER "gunzip -c /tmp/kipina-agentic.tar.gz | docker load && rm /tmp/kipina-agentic.tar.gz"
|
||||
|
||||
echo "[4/4] Käynnistetään palvelut uudelleen..."
|
||||
ssh $SSH_OPTS $SERVER "cd $REMOTE_DIR && docker compose -f docker-compose.prod.yml down && docker compose -f docker-compose.prod.yml up -d"
|
||||
|
||||
echo "=== Valmis! https://kipina.studio ==="
|
||||
|
||||
# Discord-notifikaatio
|
||||
DISCORD_WEBHOOK="https://discord.com/api/webhooks/1489504066898755687/8U02d0wug-3MkVax0xMmRoj0s_-V1psnNLPWdSOjnGnKRBUpPjaU6XiX9Iu8DgJI69AP"
|
||||
COMMIT_HASH=$(git -C "$SCRIPT_DIR" log -1 --pretty=format:"%h" 2>/dev/null || echo "?")
|
||||
COMMIT_MSG=$(git -C "$SCRIPT_DIR" log -1 --pretty=format:"%s" 2>/dev/null || echo "?")
|
||||
# python3 escapettaa erikoismerkit JSON-turvallisesti
|
||||
COMMIT_HASH=$(git log -1 --pretty=format:"%h" 2>/dev/null || echo "?")
|
||||
COMMIT_MSG=$(git log -1 --pretty=format:"%s" 2>/dev/null || echo "?")
|
||||
PAYLOAD=$(python3 -c "import json,sys; print(json.dumps({'content': sys.argv[1]}))" \
|
||||
"🚀 **Kipinä Studio julkaistu!**
|
||||
> \`${COMMIT_HASH}\` ${COMMIT_MSG}
|
||||
|
||||
@@ -2,11 +2,13 @@
|
||||
set -e
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
echo "=== Kipinä Studio Local Development ==="
|
||||
|
||||
# Tapetaan vanhat prosessit portissa 3000
|
||||
if lsof -ti:3000 >/dev/null 2>&1; then
|
||||
echo "[0] Tapetaan vanhat prosessit portissa 3000..."
|
||||
echo "[0] Vapautetaan portti 3000..."
|
||||
lsof -ti:3000 | xargs kill -9 2>/dev/null || true
|
||||
sleep 1
|
||||
fi
|
||||
@@ -15,50 +17,52 @@ fi
|
||||
echo "[1/3] Rakennetaan frontend..."
|
||||
cd "$SCRIPT_DIR/frontend"
|
||||
[ -d node_modules ] || npm install --silent
|
||||
npm run build --silent 2>&1 | tail -1
|
||||
npm run build 2>&1 | tail -1
|
||||
cd "$SCRIPT_DIR"
|
||||
|
||||
# Hub
|
||||
echo "[2/3] Käynnistetään hub..."
|
||||
cd "$SCRIPT_DIR"
|
||||
STATIC_DIR="$SCRIPT_DIR/frontend/dist" cargo run -p hub &
|
||||
STATIC_DIR="$SCRIPT_DIR/frontend/dist" cargo run -p hub 2>&1 &
|
||||
HUB_PID=$!
|
||||
sleep 2
|
||||
|
||||
# Odotetaan että hub on pystyssä
|
||||
for i in $(seq 1 10); do
|
||||
if curl -s -o /dev/null http://localhost:3000 2>/dev/null; then break; fi
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# Native-node (jos Ollama on käynnissä)
|
||||
NODE_PID=""
|
||||
if curl -s http://localhost:11434/api/tags >/dev/null 2>&1; then
|
||||
# Valitaan automaattisesti ensimmäinen qwen-coder -malli
|
||||
MODEL=$(curl -s http://localhost:11434/api/tags | python3 -c "
|
||||
import sys, json
|
||||
models = json.load(sys.stdin).get('models', [])
|
||||
# Priorisoi: 7b > 3b > mikä tahansa coder > mikä tahansa
|
||||
best = None
|
||||
for m in models:
|
||||
if 'coder' in m['name']:
|
||||
print(m['name']); break
|
||||
else:
|
||||
if models: print(models[0]['name'])
|
||||
name = m['name']
|
||||
if '7b' in name and 'coder' in name: best = name; break
|
||||
if 'coder' in name and not best: best = name
|
||||
if not best and models: best = models[0]['name']
|
||||
if best: print(best)
|
||||
" 2>/dev/null)
|
||||
|
||||
if [ -n "$MODEL" ]; then
|
||||
echo "[3/3] Ollama löytyi — käynnistetään native-node (malli: $MODEL)..."
|
||||
HUB_URL=ws://localhost:3000/ws OLLAMA_MODEL="$MODEL" cargo run -p native-node --no-default-features &
|
||||
echo "[3/3] Ollama: $MODEL — käynnistetään native-node..."
|
||||
HUB_URL=ws://localhost:3000/ws OLLAMA_MODEL="$MODEL" cargo run -p native-node --no-default-features 2>&1 &
|
||||
NODE_PID=$!
|
||||
echo " Native-node PID: $NODE_PID"
|
||||
else
|
||||
echo "[3/3] Ollama käynnissä mutta ei malleja — asenna: ollama pull qwen2.5-coder:7b"
|
||||
fi
|
||||
else
|
||||
echo "[3/3] Ollama ei käynnissä — käytetään selaimen Wasm-laskentaa"
|
||||
echo " Nopeampi: ollama serve & ollama pull qwen2.5-coder:7b && ./local.sh"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "=== http://localhost:3000 ==="
|
||||
echo " Ctrl+C pysäyttää"
|
||||
|
||||
# Avataan selain
|
||||
open http://localhost:3000 2>/dev/null || xdg-open http://localhost:3000 2>/dev/null || true
|
||||
|
||||
# Siivotaan lapset Ctrl+C:llä
|
||||
trap 'echo ""; echo "Pysäytetään..."; kill $HUB_PID $NODE_PID 2>/dev/null; exit 0' INT TERM
|
||||
|
||||
# Odotetaan hub-prosessia
|
||||
wait $HUB_PID
|
||||
|
||||
Reference in New Issue
Block a user