Merge pull request #3068 from mitchellh/sethvargo/deploy
Move to static site deployment
|
@ -1,33 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Get the parent directory of where this script is.
|
|
||||||
SOURCE="${BASH_SOURCE[0]}"
|
|
||||||
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )"
|
|
||||||
|
|
||||||
# Change into that dir because we expect that
|
|
||||||
cd $DIR
|
|
||||||
|
|
||||||
# Get the version from the command line
|
|
||||||
VERSION=$1
|
|
||||||
if [ -z $VERSION ]; then
|
|
||||||
echo "Please specify a version."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Make sure we have a bintray API key
|
|
||||||
if [ -z $BINTRAY_API_KEY ]; then
|
|
||||||
echo "Please set your bintray API key in the BINTRAY_API_KEY env var."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
for ARCHIVE in ./pkg/dist/*; do
|
|
||||||
ARCHIVE_NAME=$(basename ${ARCHIVE})
|
|
||||||
|
|
||||||
echo Uploading: $ARCHIVE_NAME
|
|
||||||
curl \
|
|
||||||
-T ${ARCHIVE} \
|
|
||||||
-umitchellh:${BINTRAY_API_KEY} \
|
|
||||||
"https://api.bintray.com/content/mitchellh/packer/packer/${VERSION}/${ARCHIVE_NAME}"
|
|
||||||
done
|
|
|
@ -1,40 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Set the tmpdir
|
|
||||||
if [ -z "$TMPDIR" ]; then
|
|
||||||
TMPDIR="/tmp"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create a temporary build dir and make sure we clean it up. For
|
|
||||||
# debugging, comment out the trap line.
|
|
||||||
DEPLOY=`mktemp -d $TMPDIR/packer-www-XXXXXX`
|
|
||||||
trap "rm -rf $DEPLOY" INT TERM EXIT
|
|
||||||
|
|
||||||
# Get the parent directory of where this script is.
|
|
||||||
SOURCE="${BASH_SOURCE[0]}"
|
|
||||||
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
|
||||||
DIR="$( cd -P "$( dirname "$SOURCE" )/.." && pwd )"
|
|
||||||
|
|
||||||
# Copy into tmpdir
|
|
||||||
shopt -s dotglob
|
|
||||||
cp -r $DIR/website/* $DEPLOY/
|
|
||||||
|
|
||||||
# Change into that directory
|
|
||||||
pushd $DEPLOY &>/dev/null
|
|
||||||
|
|
||||||
# Ignore some stuff
|
|
||||||
touch .gitignore
|
|
||||||
echo ".sass-cache" >> .gitignore
|
|
||||||
echo "build" >> .gitignore
|
|
||||||
echo "vendor" >> .gitignore
|
|
||||||
|
|
||||||
# Add everything
|
|
||||||
git init -q .
|
|
||||||
git add .
|
|
||||||
git commit -q -m "Deploy by $USER"
|
|
||||||
|
|
||||||
git remote add heroku git@heroku.com:packer-www.git
|
|
||||||
git push -f heroku master
|
|
||||||
|
|
||||||
# Go back to our root
|
|
||||||
popd &>/dev/null
|
|
|
@ -1,2 +0,0 @@
|
||||||
https://github.com/heroku/heroku-buildpack-ruby.git
|
|
||||||
https://github.com/hashicorp/heroku-buildpack-middleman.git
|
|
|
@ -1 +0,0 @@
|
||||||
2.2.2
|
|
|
@ -1,7 +1,5 @@
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
ruby "2.2.2"
|
|
||||||
|
|
||||||
gem "middleman-hashicorp", github: "hashicorp/middleman-hashicorp"
|
gem "middleman-hashicorp", github: "hashicorp/middleman-hashicorp"
|
||||||
gem "middleman-breadcrumbs"
|
gem "middleman-breadcrumbs"
|
||||||
gem "htmlbeautifier"
|
gem "htmlbeautifier"
|
|
@ -1,6 +1,6 @@
|
||||||
GIT
|
GIT
|
||||||
remote: git://github.com/hashicorp/middleman-hashicorp.git
|
remote: git://github.com/hashicorp/middleman-hashicorp.git
|
||||||
revision: 15cbda0cf1d963fa71292dee921229e7ee618272
|
revision: 953baf8762b915cf57553bcc82bc946ad777056f
|
||||||
specs:
|
specs:
|
||||||
middleman-hashicorp (0.2.0)
|
middleman-hashicorp (0.2.0)
|
||||||
bootstrap-sass (~> 3.3)
|
bootstrap-sass (~> 3.3)
|
||||||
|
@ -21,18 +21,18 @@ GIT
|
||||||
GEM
|
GEM
|
||||||
remote: https://rubygems.org/
|
remote: https://rubygems.org/
|
||||||
specs:
|
specs:
|
||||||
activesupport (4.2.4)
|
activesupport (4.2.5)
|
||||||
i18n (~> 0.7)
|
i18n (~> 0.7)
|
||||||
json (~> 1.7, >= 1.7.7)
|
json (~> 1.7, >= 1.7.7)
|
||||||
minitest (~> 5.1)
|
minitest (~> 5.1)
|
||||||
thread_safe (~> 0.3, >= 0.3.4)
|
thread_safe (~> 0.3, >= 0.3.4)
|
||||||
tzinfo (~> 1.1)
|
tzinfo (~> 1.1)
|
||||||
autoprefixer-rails (6.0.3)
|
autoprefixer-rails (6.2.3)
|
||||||
execjs
|
execjs
|
||||||
json
|
json
|
||||||
bootstrap-sass (3.3.5.1)
|
bootstrap-sass (3.3.6)
|
||||||
autoprefixer-rails (>= 5.0.0.1)
|
autoprefixer-rails (>= 5.2.1)
|
||||||
sass (>= 3.3.0)
|
sass (>= 3.3.4)
|
||||||
builder (3.2.2)
|
builder (3.2.2)
|
||||||
capybara (2.4.4)
|
capybara (2.4.4)
|
||||||
mime-types (>= 1.16)
|
mime-types (>= 1.16)
|
||||||
|
@ -40,11 +40,11 @@ GEM
|
||||||
rack (>= 1.0.0)
|
rack (>= 1.0.0)
|
||||||
rack-test (>= 0.5.4)
|
rack-test (>= 0.5.4)
|
||||||
xpath (~> 2.0)
|
xpath (~> 2.0)
|
||||||
chunky_png (1.3.4)
|
chunky_png (1.3.5)
|
||||||
coffee-script (2.4.1)
|
coffee-script (2.4.1)
|
||||||
coffee-script-source
|
coffee-script-source
|
||||||
execjs
|
execjs
|
||||||
coffee-script-source (1.9.1.1)
|
coffee-script-source (1.10.0)
|
||||||
commonjs (0.2.7)
|
commonjs (0.2.7)
|
||||||
compass (1.0.3)
|
compass (1.0.3)
|
||||||
chunky_png (~> 1.2)
|
chunky_png (~> 1.2)
|
||||||
|
@ -63,7 +63,7 @@ GEM
|
||||||
eventmachine (>= 0.12.9)
|
eventmachine (>= 0.12.9)
|
||||||
http_parser.rb (~> 0.6.0)
|
http_parser.rb (~> 0.6.0)
|
||||||
erubis (2.7.0)
|
erubis (2.7.0)
|
||||||
eventmachine (1.0.8)
|
eventmachine (1.0.9)
|
||||||
execjs (2.6.0)
|
execjs (2.6.0)
|
||||||
ffi (1.9.10)
|
ffi (1.9.10)
|
||||||
git-version-bump (0.15.1)
|
git-version-bump (0.15.1)
|
||||||
|
@ -81,23 +81,23 @@ GEM
|
||||||
less (2.6.0)
|
less (2.6.0)
|
||||||
commonjs (~> 0.2.7)
|
commonjs (~> 0.2.7)
|
||||||
libv8 (3.16.14.13)
|
libv8 (3.16.14.13)
|
||||||
listen (3.0.3)
|
listen (3.0.5)
|
||||||
rb-fsevent (>= 0.9.3)
|
rb-fsevent (>= 0.9.3)
|
||||||
rb-inotify (>= 0.9)
|
rb-inotify (>= 0.9)
|
||||||
middleman (3.4.0)
|
middleman (3.4.1)
|
||||||
coffee-script (~> 2.2)
|
coffee-script (~> 2.2)
|
||||||
compass (>= 1.0.0, < 2.0.0)
|
compass (>= 1.0.0, < 2.0.0)
|
||||||
compass-import-once (= 1.0.5)
|
compass-import-once (= 1.0.5)
|
||||||
execjs (~> 2.0)
|
execjs (~> 2.0)
|
||||||
haml (>= 4.0.5)
|
haml (>= 4.0.5)
|
||||||
kramdown (~> 1.2)
|
kramdown (~> 1.2)
|
||||||
middleman-core (= 3.4.0)
|
middleman-core (= 3.4.1)
|
||||||
middleman-sprockets (>= 3.1.2)
|
middleman-sprockets (>= 3.1.2)
|
||||||
sass (>= 3.4.0, < 4.0)
|
sass (>= 3.4.0, < 4.0)
|
||||||
uglifier (~> 2.5)
|
uglifier (~> 2.5)
|
||||||
middleman-breadcrumbs (0.2.0)
|
middleman-breadcrumbs (0.2.0)
|
||||||
middleman (>= 3.3.5)
|
middleman (>= 3.3.5)
|
||||||
middleman-core (3.4.0)
|
middleman-core (3.4.1)
|
||||||
activesupport (~> 4.1)
|
activesupport (~> 4.1)
|
||||||
bundler (~> 1.1)
|
bundler (~> 1.1)
|
||||||
capybara (~> 2.4.4)
|
capybara (~> 2.4.4)
|
||||||
|
@ -109,7 +109,7 @@ GEM
|
||||||
rack (>= 1.4.5, < 2.0)
|
rack (>= 1.4.5, < 2.0)
|
||||||
thor (>= 0.15.2, < 2.0)
|
thor (>= 0.15.2, < 2.0)
|
||||||
tilt (~> 1.4.1, < 2.0)
|
tilt (~> 1.4.1, < 2.0)
|
||||||
middleman-livereload (3.4.3)
|
middleman-livereload (3.4.6)
|
||||||
em-websocket (~> 0.5.1)
|
em-websocket (~> 0.5.1)
|
||||||
middleman-core (>= 3.3)
|
middleman-core (>= 3.3)
|
||||||
rack-livereload (~> 0.3.15)
|
rack-livereload (~> 0.3.15)
|
||||||
|
@ -121,15 +121,17 @@ GEM
|
||||||
sprockets (~> 2.12.1)
|
sprockets (~> 2.12.1)
|
||||||
sprockets-helpers (~> 1.1.0)
|
sprockets-helpers (~> 1.1.0)
|
||||||
sprockets-sass (~> 1.3.0)
|
sprockets-sass (~> 1.3.0)
|
||||||
middleman-syntax (2.0.0)
|
middleman-syntax (2.1.0)
|
||||||
middleman-core (~> 3.2)
|
middleman-core (>= 3.2)
|
||||||
rouge (~> 1.0)
|
rouge (~> 1.0)
|
||||||
mime-types (2.6.2)
|
mime-types (3.0)
|
||||||
mini_portile (0.6.2)
|
mime-types-data (~> 3.2015)
|
||||||
minitest (5.8.1)
|
mime-types-data (3.2015.1120)
|
||||||
|
mini_portile2 (2.0.0)
|
||||||
|
minitest (5.8.3)
|
||||||
multi_json (1.11.2)
|
multi_json (1.11.2)
|
||||||
nokogiri (1.6.6.2)
|
nokogiri (1.6.7.1)
|
||||||
mini_portile (~> 0.6.0)
|
mini_portile2 (~> 2.0.0.rc2)
|
||||||
padrino-helpers (0.12.5)
|
padrino-helpers (0.12.5)
|
||||||
i18n (~> 0.6, >= 0.6.7)
|
i18n (~> 0.6, >= 0.6.7)
|
||||||
padrino-support (= 0.12.5)
|
padrino-support (= 0.12.5)
|
||||||
|
@ -148,13 +150,13 @@ GEM
|
||||||
rack-ssl-enforcer (0.2.9)
|
rack-ssl-enforcer (0.2.9)
|
||||||
rack-test (0.6.3)
|
rack-test (0.6.3)
|
||||||
rack (>= 1.0)
|
rack (>= 1.0)
|
||||||
rb-fsevent (0.9.6)
|
rb-fsevent (0.9.7)
|
||||||
rb-inotify (0.9.5)
|
rb-inotify (0.9.5)
|
||||||
ffi (>= 0.5.0)
|
ffi (>= 0.5.0)
|
||||||
redcarpet (3.3.3)
|
redcarpet (3.3.4)
|
||||||
ref (2.0.0)
|
ref (2.0.0)
|
||||||
rouge (1.10.1)
|
rouge (1.10.1)
|
||||||
sass (3.4.19)
|
sass (3.4.21)
|
||||||
sprockets (2.12.4)
|
sprockets (2.12.4)
|
||||||
hike (~> 1.2)
|
hike (~> 1.2)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
web: bundle exec thin start -p $PORT
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
{
|
||||||
|
"variables": {
|
||||||
|
"aws_access_key_id": "{{ env `AWS_ACCESS_KEY_ID` }}",
|
||||||
|
"aws_secret_access_key": "{{ env `AWS_SECRET_ACCESS_KEY` }}",
|
||||||
|
"aws_region": "{{ env `AWS_REGION` }}",
|
||||||
|
"fastly_api_key": "{{ env `FASTLY_API_KEY` }}"
|
||||||
|
},
|
||||||
|
"builders": [
|
||||||
|
{
|
||||||
|
"type": "docker",
|
||||||
|
"image": "ruby:2.3-slim",
|
||||||
|
"commit": "true"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"provisioners": [
|
||||||
|
{
|
||||||
|
"type": "file",
|
||||||
|
"source": ".",
|
||||||
|
"destination": "/app"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "shell",
|
||||||
|
"environment_vars": [
|
||||||
|
"AWS_ACCESS_KEY_ID={{ user `aws_access_key_id` }}",
|
||||||
|
"AWS_SECRET_ACCESS_KEY={{ user `aws_secret_access_key` }}",
|
||||||
|
"AWS_REGION={{ user `aws_region` }}",
|
||||||
|
"FASTLY_API_KEY={{ user `fastly_api_key` }}"
|
||||||
|
],
|
||||||
|
"inline": [
|
||||||
|
"apt-get update",
|
||||||
|
"apt-get install -y build-essential curl git libffi-dev s3cmd wget",
|
||||||
|
"cd /app",
|
||||||
|
|
||||||
|
"bundle check || bundle install --jobs 7",
|
||||||
|
"bundle exec middleman build",
|
||||||
|
|
||||||
|
"/bin/bash ./scripts/deploy.sh"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,88 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
PROJECT="packer"
|
||||||
|
PROJECT_URL="www.packer.io"
|
||||||
|
FASTLY_SERVICE_ID="7GrxRJP3PVBuqQbyxYQ0MV"
|
||||||
|
|
||||||
|
# Ensure the proper AWS environment variables are set
|
||||||
|
if [ -z "$AWS_ACCESS_KEY_ID" ]; then
|
||||||
|
echo "Missing AWS_ACCESS_KEY_ID!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$AWS_SECRET_ACCESS_KEY" ]; then
|
||||||
|
echo "Missing AWS_SECRET_ACCESS_KEY!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure the proper Fastly keys are set
|
||||||
|
if [ -z "$FASTLY_API_KEY" ]; then
|
||||||
|
echo "Missing FASTLY_API_KEY!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ensure we have s3cmd installed
|
||||||
|
if ! command -v "s3cmd" >/dev/null 2>&1; then
|
||||||
|
echo "Missing s3cmd!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the parent directory of where this script is and change into our website
|
||||||
|
# directory
|
||||||
|
SOURCE="${BASH_SOURCE[0]}"
|
||||||
|
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
||||||
|
DIR="$(cd -P "$( dirname "$SOURCE" )/.." && pwd)"
|
||||||
|
|
||||||
|
# Delete any .DS_Store files for our OS X friends.
|
||||||
|
find "$DIR" -type f -name '.DS_Store' -delete
|
||||||
|
|
||||||
|
# Upload the files to S3 - we disable mime-type detection by the python library
|
||||||
|
# and just guess from the file extension because it's surprisingly more
|
||||||
|
# accurate, especially for CSS and javascript. We also tag the uploaded files
|
||||||
|
# with the proper Surrogate-Key, which we will later purge in our API call to
|
||||||
|
# Fastly.
|
||||||
|
if [ -z "$NO_UPLOAD" ]; then
|
||||||
|
echo "Uploading to S3..."
|
||||||
|
|
||||||
|
# Check that the site has been built
|
||||||
|
if [ ! -d "$DIR/build" ]; then
|
||||||
|
echo "Missing compiled website! Run 'make build' to compile!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
s3cmd \
|
||||||
|
--quiet \
|
||||||
|
--delete-removed \
|
||||||
|
--guess-mime-type \
|
||||||
|
--no-mime-magic \
|
||||||
|
--acl-public \
|
||||||
|
--recursive \
|
||||||
|
--add-header="Cache-Control: max-age=31536000" \
|
||||||
|
--add-header="x-amz-meta-surrogate-key: site-$PROJECT" \
|
||||||
|
sync "$DIR/build/" "s3://hc-sites/$PROJECT/latest/"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Perform a soft-purge of the surrogate key.
|
||||||
|
if [ -z "$NO_PURGE" ]; then
|
||||||
|
echo "Purging Fastly cache..."
|
||||||
|
curl \
|
||||||
|
--fail \
|
||||||
|
--silent \
|
||||||
|
--output /dev/null \
|
||||||
|
--request "POST" \
|
||||||
|
--header "Accept: application/json" \
|
||||||
|
--header "Fastly-Key: $FASTLY_API_KEY" \
|
||||||
|
--header "Fastly-Soft-Purge: 1" \
|
||||||
|
"https://api.fastly.com/service/$FASTLY_SERVICE_ID/purge/site-$PROJECT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Warm the cache with recursive wget.
|
||||||
|
if [ -z "$NO_WARM" ]; then
|
||||||
|
echo "Warming Fastly cache..."
|
||||||
|
wget \
|
||||||
|
--recursive \
|
||||||
|
--delete-after \
|
||||||
|
--quiet \
|
||||||
|
"https://$PROJECT_URL/"
|
||||||
|
fi
|
Before Width: | Height: | Size: 524 B After Width: | Height: | Size: 419 B |
Before Width: | Height: | Size: 506 B After Width: | Height: | Size: 416 B |
Before Width: | Height: | Size: 597 B After Width: | Height: | Size: 596 B |
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 96 KiB |
Before Width: | Height: | Size: 978 B After Width: | Height: | Size: 779 B |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 451 B After Width: | Height: | Size: 390 B |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 155 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |