The exclusion for local game data matched any folder named data, so the cards and boards the server reads never shipped after the droplet's first setup; the live copy of cards.json had drifted to August's (text of FAQ rulings, and rows of a set this edition does not deal). All 198 production ledgers replay clean with the current data. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
35 lines
1.7 KiB
Bash
Executable File
35 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Build locally, push to the droplet, restart. Usage: deploy/deploy.sh <droplet-ip>
|
|
set -euo pipefail
|
|
HOST="${1:?usage: deploy.sh <droplet-ip-or-host>}"
|
|
|
|
# The family list is the kit's; the site deploys with the kit's latest copy when the kit is beside this checkout.
|
|
KIT_FAMILY="$(dirname "$0")/../../game-kit/family.json"
|
|
[ -f "$KIT_FAMILY" ] && cp "$KIT_FAMILY" packages/web/public/family.json
|
|
|
|
npm run build --workspace=@wizwar/web
|
|
# /data/ is the local game ledgers, anchored so the engine's own data/ (the
|
|
# cards and boards the server reads) always ships.
|
|
# Old hashed chunks stay a week: a page loaded before this deploy can still
|
|
# fetch the module it was built against instead of failing mid-game.
|
|
rsync -az --delete --filter='P packages/web/dist/assets/*' \
|
|
--exclude node_modules --exclude /data/ --exclude .git --exclude research \
|
|
./ "root@$HOST:/opt/wizwar/"
|
|
ssh "root@$HOST" '
|
|
cd /opt/wizwar && npm install --no-audit --no-fund
|
|
find /opt/wizwar/packages/web/dist/assets -type f -mtime +7 -delete
|
|
chown -R wizwar:wizwar /opt/wizwar
|
|
cp /opt/wizwar/deploy/wizwar.service /etc/systemd/system/wizwar.service
|
|
# Cron runs the backup and the rollup from /usr/local/bin: install
|
|
# them on every deploy so the live copies are always the repo copies.
|
|
install -m 755 /opt/wizwar/deploy/wizwar-backup.sh /usr/local/bin/wizwar-backup.sh
|
|
install -m 755 /opt/wizwar/deploy/wizwar-rollup.sh /usr/local/bin/wizwar-rollup.sh
|
|
install -m 755 /opt/wizwar/deploy/wizwar-visitors.sh /usr/local/bin/wizwar-visitors.sh
|
|
install -m 644 /opt/wizwar/deploy/wizwar-rollup.cron /etc/cron.d/wizwar-rollup
|
|
systemctl daemon-reload
|
|
systemctl enable --now wizwar
|
|
systemctl restart wizwar
|
|
systemctl --no-pager -l status wizwar | head -5
|
|
'
|
|
echo "deployed."
|