summaryrefslogtreecommitdiff
path: root/deploy
diff options
context:
space:
mode:
Diffstat (limited to 'deploy')
-rwxr-xr-xdeploy41
1 files changed, 41 insertions, 0 deletions
diff --git a/deploy b/deploy
new file mode 100755
index 0000000..7c51dbe
--- /dev/null
+++ b/deploy
@@ -0,0 +1,41 @@
+#! /bin/sh
+
+# Deploy the static website.
+#
+# Re-generates the static website from source and asserts a clean working tree
+# before uploading the website to the server.
+
+set -o errexit
+set -o nounset
+
+# Git root directory
+root="$( git rev-parse --show-toplevel )"
+
+# Source directory with a trailing slash for rsync
+src="${root}/_site/"
+
+# Git revision
+rev="$( git rev-parse --verify HEAD )"
+
+# ISO 8601 timestamp
+now="$( date -u "+%Y-%m-%dT%H:%M:%SZ" )"
+
+# Archive file name
+archive="./${now}_${rev}.tar.gz"
+
+printf "Re-generating static website from source ...\\n"
+( cd "${root}" \
+ && stack run -- clean >/dev/null 2>&1 \
+ && stack run -- build >/dev/null 2>&1 )
+
+[ -z "$( git status --porcelain )" ] || {
+ ( >&2 printf "error: dirty working tree\\n" )
+ printf "Aborting deployment due to unstaged changes or untracked files.\\n"
+ exit 1
+}
+
+tar -czf "${archive}" "${src}"
+scp "${archive}" engine.skreutz.com:www-archive/
+
+rsync --rsync-path=openrsync --archive --delete --verbose \
+ "${src}" "engine.skreutz.com:/var/www/htdocs/www.skreutz.com"
Generated by cgit. See skreutz.com for my tech blog and contact information.