71 lines
2.8 KiB
Bash
Executable File
71 lines
2.8 KiB
Bash
Executable File
#!/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. Rakennetaan Docker-image lokaalisti
|
|
echo "[1/4] Rakennetaan image lokaalisti..."
|
|
docker build --platform linux/amd64 -f Dockerfile.prod -t kipina-agentic:latest .
|
|
|
|
# 2. Tallennetaan tiedostoon
|
|
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
|
|
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..."
|
|
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
|
|
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
|