buildia viilattu

This commit is contained in:
Jaakko Vanhala
2026-04-12 11:05:35 +03:00
parent 8995bcef30
commit 2b33980be4
4 changed files with 44 additions and 48 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

@@ -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