summaryrefslogtreecommitdiff
path: root/deploy.sh
diff options
context:
space:
mode:
Diffstat (limited to 'deploy.sh')
-rwxr-xr-xdeploy.sh64
1 files changed, 64 insertions, 0 deletions
diff --git a/deploy.sh b/deploy.sh
new file mode 100755
index 0000000..d819097
--- /dev/null
+++ b/deploy.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+set -e
+
+# Configuration
+REMOTE="titanium"
+FQDN="doot.terst.org"
+SITE_DIR="/site/${FQDN}"
+SERVICE="task-dashboard@${FQDN}"
+
+echo "==> Building binary (linux/amd64)..."
+GOOS=linux GOARCH=amd64 go build -o app cmd/dashboard/main.go
+
+echo "==> Pushing code to ${REMOTE}..."
+git push ${REMOTE} master
+
+echo "==> Uploading binary..."
+scp app ${REMOTE}:${SITE_DIR}/app.new
+
+echo "==> Deploying on ${REMOTE}..."
+ssh ${REMOTE} bash -s << 'EOF'
+set -e
+FQDN="doot.terst.org"
+SITE_DIR="/site/${FQDN}"
+SERVICE="task-dashboard@${FQDN}"
+
+cd ${SITE_DIR}
+
+echo "Stopping service..."
+systemctl stop ${SERVICE} || true
+
+echo "Swapping binary..."
+mv app.new app
+
+echo "Checking out latest code..."
+cd app-code
+GIT_WORK_TREE=${SITE_DIR}/checkout git checkout -f master 2>/dev/null || {
+ mkdir -p ${SITE_DIR}/checkout
+ GIT_WORK_TREE=${SITE_DIR}/checkout git checkout -f master
+}
+cd ${SITE_DIR}
+
+echo "Syncing static files..."
+rsync -a --delete checkout/web/static/ public/
+
+echo "Syncing templates..."
+rsync -a --delete checkout/web/templates/ templates/
+
+echo "Setting permissions..."
+chown -R www-data:www-data ${SITE_DIR}
+find ${SITE_DIR} -type d -exec chmod 755 {} \;
+find ${SITE_DIR} -type f -exec chmod 644 {} \;
+chmod +x ${SITE_DIR}/app
+chmod 600 ${SITE_DIR}/.env 2>/dev/null || true
+
+echo "Starting service..."
+systemctl start ${SERVICE}
+sleep 1
+systemctl status ${SERVICE} --no-pager -l
+
+echo "Deploy complete!"
+EOF
+
+rm -f app
+echo "==> Done!"