Initial commit
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
#!/usr/bin/env bash
|
||||
# Builds TaskForge and deploys it to a droplet. Run from Git Bash (or any shell with jai, ssh and scp):
|
||||
#
|
||||
# deploy/deploy.sh root@<droplet-ip> tasks.example.com first time (sets up the droplet for that domain)
|
||||
# deploy/deploy.sh root@<droplet-ip> later updates
|
||||
#
|
||||
# The server is cross-compiled to a Linux object file here and linked on the droplet (which has libc etc.).
|
||||
set -euo pipefail
|
||||
|
||||
HOST="${1:?usage: deploy.sh user@host [domain]}"
|
||||
DOMAIN="${2:-}"
|
||||
cd "$(dirname "$0")/.."
|
||||
|
||||
jai build.jai - web release
|
||||
jai build.jai - server-linux
|
||||
|
||||
ssh "$HOST" 'mkdir -p /opt/taskforge/staging'
|
||||
scp server/bin/taskforge-server.o web/index.html web/taskforge.js web/taskforge.wasm web/fonts.bin \
|
||||
deploy/setup-droplet.sh deploy/taskforge.service deploy/Caddyfile \
|
||||
"$HOST":/opt/taskforge/staging/
|
||||
|
||||
ssh "$HOST" "set -e
|
||||
cd /opt/taskforge/staging
|
||||
if [ ! -f /etc/systemd/system/taskforge.service ]; then
|
||||
if [ -z '$DOMAIN' ]; then echo 'First deploy: pass your domain as the second argument.'; exit 1; fi
|
||||
bash setup-droplet.sh '$DOMAIN'
|
||||
fi
|
||||
cc taskforge-server.o -o taskforge-server -no-pie -lm -ldl -lpthread
|
||||
install -m 755 taskforge-server /opt/taskforge/bin/taskforge-server
|
||||
install -m 644 index.html taskforge.js taskforge.wasm fonts.bin /opt/taskforge/web/
|
||||
systemctl restart taskforge
|
||||
sleep 1
|
||||
systemctl --no-pager --lines=5 status taskforge"
|
||||
Reference in New Issue
Block a user