contrib/deploy.sh (1427 bytes)
1 #!/bin/sh 2 # deploy.sh: build sbm-sync for Linux and install it on a server that runs 3 # sbm-sync.service (see sbm-sync.service) with systemd and nginx. 4 # 5 # sh contrib/deploy.sh root@example.org 6 # 7 # The script keeps the old binary as /usr/local/bin/sbm-sync.bak-<time>, 8 # installs sfeed for the feed job, and starts sbm-feed.timer. 9 set -e 10 host=${1:?usage: sh contrib/deploy.sh user@host} 11 cd "$(dirname "$0")/.." 12 GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -trimpath -o sbm-sync-linux . 13 scp sbm-sync-linux contrib/sbm-feed.service contrib/sbm-feed.timer "$host:/tmp/" 14 rm sbm-sync-linux 15 ssh "$host" sh -s << 'EOF' 16 set -e 17 if ! command -v sfeed_update >/dev/null; then 18 DEBIAN_FRONTEND=noninteractive apt-get install -y -q sfeed 19 fi 20 if [ -f /usr/local/bin/sbm-sync ]; then 21 cp -p /usr/local/bin/sbm-sync "/usr/local/bin/sbm-sync.bak-$(date +%Y%m%d-%H%M%S)" 22 fi 23 install -m 755 /tmp/sbm-sync-linux /usr/local/bin/sbm-sync 24 install -m 644 /tmp/sbm-feed.service /tmp/sbm-feed.timer /etc/systemd/system/ 25 rm /tmp/sbm-sync-linux /tmp/sbm-feed.service /tmp/sbm-feed.timer 26 systemctl daemon-reload 27 systemctl restart sbm-sync 28 systemctl enable --now sbm-feed.timer 29 sleep 1 30 if ! systemctl is-active --quiet sbm-sync; then 31 journalctl -u sbm-sync -n 20 --no-pager 32 exit 1 33 fi 34 echo "sbm-sync: $(systemctl is-active sbm-sync), sbm-feed.timer: $(systemctl is-active sbm-feed.timer)" 35 systemctl list-timers sbm-feed.timer --no-pager 36 EOF