#!/bin/bash set -e if [ "$1" == "local" ]; then echo "=== Kipinä Studio Local Development ===" echo "Käynnistetään kokonaisuus puhtaasti Docker-kontissa..." docker compose up agentic-poc exit 0 fi 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" 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 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" echo " Commitoitu: $DEPLOY_MSG" fi # 1. Käännetään native-node-binäärit kaikille alustoille echo "[1/6] Käännetään native-node-binäärit..." ./build-binaries.sh # 2. Rakennetaan Docker-image lokaalisti echo "[2/6] Rakennetaan image lokaalisti..." docker build --platform linux/amd64 -f Dockerfile.prod -t kipina-agentic:latest . # 3. Tallennetaan tiedostoon echo "[3/6] Pakataan image..." docker save kipina-agentic:latest | gzip > /tmp/kipina-agentic.tar.gz echo " Koko: $(du -h /tmp/kipina-agentic.tar.gz | cut -f1)" # 4. Siirretään palvelimelle echo "[4/6] 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/ # 5. Ladataan image ja käynnistetään echo "[5/6] Ladataan image palvelimella..." ssh $SSH_OPTS $SERVER "gunzip -c /tmp/kipina-agentic.tar.gz | docker load && rm /tmp/kipina-agentic.tar.gz" echo "[6/6] 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 PAYLOAD=$(python3 -c "import json,sys; print(json.dumps({'content': sys.argv[1]}))" \ "🚀 **Kipinä Studio julkaistu!** > \`${COMMIT_HASH}\` ${COMMIT_MSG} > https://kipina.studio") curl -s -H "Content-Type: application/json" -d "$PAYLOAD" "$DISCORD_WEBHOOK" > /dev/null