diff options
-rw-r--r-- | Makefile | 19 | ||||
-rw-r--r-- | license-generator/.env.sample | 3 | ||||
-rwxr-xr-x | scripts/deploy.sh | 34 | ||||
-rwxr-xr-x | scripts/post-deploy.sh | 25 | ||||
-rwxr-xr-x | scripts/provision.sh | 20 |
5 files changed, 101 insertions, 0 deletions
@@ -10,3 +10,22 @@ assets/styles.css: assets/stylesheets/main.hcss \ internal_error.html: internal_error.in.html ./scripts/generate_500.py > $@ + +# Compile binaries for Linux +license-generator/target/release/fulfillment \ +license-generator/target/release/license: + docker run \ + --rm \ + --interactive \ + --tty \ + --volume $$PWD/license-generator:/app \ + --workdir /app \ + rust:1.30.1-stretch \ + cargo build --release + +.PHONY: deploy +deploy: license-generator/target/release/fulfillment \ + license-generator/target/release/license \ + internal_error.html \ + assets/styles.css + bash ./scripts/deploy.sh diff --git a/license-generator/.env.sample b/license-generator/.env.sample index bc8f6ba..9636e4e 100644 --- a/license-generator/.env.sample +++ b/license-generator/.env.sample @@ -8,6 +8,9 @@ export DATABASE_URL="mysql://localhost:3306/dome_key" export GO_DATABASE_URL="mysql://tcp(localhost:3306)/dome_key" +export SSH_SERVER="user@host" +export REMOTE_PUBLIC_WWW="/home/user/www" + function migrate-create () { local migration_name="$1" diff --git a/scripts/deploy.sh b/scripts/deploy.sh new file mode 100755 index 0000000..a2bde7a --- /dev/null +++ b/scripts/deploy.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +set -ex + + +source license-generator/.env + +echo 'Deploying...' + +rsync -avz \ + --exclude 'assets/stylesheets' \ + 400.html \ + 404.html \ + assets \ + doc \ + downloads \ + index.html \ + internal_error.html \ + license-generator/target/release/fulfillment \ + license-generator/target/release/license \ + robots.txt \ + thank-you.html \ + "$SSH_SERVER":"$REMOTE_PUBLIC_WWW/" + +rsync -avz \ + --exclude '.git' \ + license-generator/migrations \ + production-config \ + scripts \ + "$SSH_SERVER":~/ + + +echo 'Running post-deploy script...' +ssh "$SSH_SERVER" 'bash ~/scripts/post-deploy.sh' diff --git a/scripts/post-deploy.sh b/scripts/post-deploy.sh new file mode 100755 index 0000000..4d3fd9c --- /dev/null +++ b/scripts/post-deploy.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -ex + + +export PATH="$HOME/opt/bin:$PATH" + +source "$HOME/production-config/env" + +echo 'Moving files...' + +mv "$REMOTE_PUBLIC_WWW/fulfillment" "$REMOTE_PUBLIC_WWW/fulfillment.fcgi" +mv "$REMOTE_PUBLIC_WWW/license" "$REMOTE_PUBLIC_WWW/license.fcgi" + +mv production-config/.htaccess "$REMOTE_PUBLIC_WWW" + + +echo 'Provisioning...' + +sh "$HOME/scripts/provision.sh" + + +echo 'Migrating database...' + +migrate-up diff --git a/scripts/provision.sh b/scripts/provision.sh new file mode 100755 index 0000000..bf8e478 --- /dev/null +++ b/scripts/provision.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +set -ex + +OPT="$HOME/opt" + + +if [ ! -f "$OPT/bin/migrate" ]; then + echo "Installing 'migrate'..." + + mkdir -p "$OPT/bin" + + curl \ + --remote-name \ + --location 'https://github.com/golang-migrate/migrate/releases/download/v4.0.2/migrate.linux-amd64.tar.gz' + + tar xf migrate.linux-amd64.tar.gz + mv migrate.linux-amd64 "$OPT/bin/migrate" + rm migrate.linux-amd64.tar.gz +fi |