Menu
Public repository / 19126b373cd637ce1c055d17f2198a09424fe140
AkurAI-Drive / site/deploy.sh
Latest change 50b39439a0b58ad47208f3c1ee400b59d87c2fd7 - fix(ci): use EC2 host alias in Drive deployers by AkurAI Agent
#!/usr/bin/env bash
# Publish the live marketing site through a versioned release directory.
# This is called by the approved AkurAI Build production job, not ad hoc.
set -euo pipefail
SSH_HOST="${AKURAI_MAIL_SSH:-akurai-ec2}"
ROOT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
SOURCE_DIR="${DRIVE_SITE_SOURCE:-$ROOT_DIR/site/frontend}"
RELEASE="${DRIVE_RELEASE:-${AKURAI_COMMIT_SHA:-local}}"
REMOTE_BASE="/opt/akurai-drive"
if [[ ! -d "$SOURCE_DIR" && ! -f "$SOURCE_DIR" ]]; then
echo "site source directory or archive not found: $SOURCE_DIR" >&2
exit 1
fi
if [[ ! "$RELEASE" =~ ^[A-Za-z0-9._-]+$ ]]; then
echo "invalid release id" >&2
exit 2
fi
archive="$(mktemp --suffix=.tar.gz)"
trap 'rm -f "$archive"' EXIT
if [[ -f "$SOURCE_DIR" ]]; then
cp "$SOURCE_DIR" "$archive"
else
tar -czf "$archive" -C "$SOURCE_DIR" .
fi
scp -q "$archive" "$SSH_HOST:/tmp/akurai-drive-site-$RELEASE.tar.gz"
ssh "$SSH_HOST" "sudo bash -s -- '$RELEASE'" <<'REMOTE'
set -euo pipefail
release="$1"
base=/opt/akurai-drive
archive="/tmp/akurai-drive-site-$release.tar.gz"
release_dir="$base/releases/$release"
mkdir -p "$base/releases"
rm -rf "$release_dir"
mkdir -p "$release_dir"
tar -xzf "$archive" -C "$release_dir"
ln -sfn "$release_dir" "$base/current"
cat > /etc/systemd/system/akurai-drive.service <<EOF
[Unit]
Description=akurai-drive (AkurAI single-binary app)
After=network.target
[Service]
Type=simple
ExecStart=$base/bin/akurai-drive serve --dir $base/current --host 127.0.0.1 --port 8095 --name akurai-drive
WorkingDirectory=$base
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable akurai-drive >/dev/null 2>&1 || true
systemctl restart akurai-drive
rm -f "$archive"
sleep 2
curl -fsS http://127.0.0.1:8095/ >/dev/null
test -L "$base/current"
REMOTE
echo "AkurAI Drive marketing site published: $RELEASE"