Merge pull request #7944 from mitchellh/sethvargo/docker_website

Use Docker-based build and deployments
This commit is contained in:
Seth Vargo 2016-10-30 18:37:50 -04:00 committed by GitHub
commit e5f7d0db88
7 changed files with 66 additions and 96 deletions

View File

@ -1,4 +1,3 @@
source "https://rubygems.org"
gem "middleman-hashicorp",
git: "https://github.com/hashicorp/middleman-hashicorp.git"
gem "middleman-hashicorp", "0.3.4"

View File

@ -1,23 +1,3 @@
GIT
remote: https://github.com/hashicorp/middleman-hashicorp.git
revision: 80ddc227b26cbbb3742d14396f26172174222080
specs:
middleman-hashicorp (0.2.0)
bootstrap-sass (~> 3.3)
builder (~> 3.2)
less (~> 2.6)
middleman (~> 3.4)
middleman-livereload (~> 3.4)
middleman-minify-html (~> 3.4)
middleman-syntax (~> 2.0)
rack-contrib (~> 1.2)
rack-protection (~> 1.5)
rack-rewrite (~> 1.5)
rack-ssl-enforcer (~> 0.2)
redcarpet (~> 3.2)
therubyracer (~> 0.12)
thin (~> 1.6)
GEM
remote: https://rubygems.org/
specs:
@ -27,7 +7,7 @@ GEM
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
autoprefixer-rails (6.4.1.1)
autoprefixer-rails (6.5.1.1)
execjs
bootstrap-sass (3.3.7)
autoprefixer-rails (>= 5.2.1)
@ -44,7 +24,6 @@ GEM
coffee-script-source
execjs
coffee-script-source (1.10.0)
commonjs (0.2.7)
compass (1.0.3)
chunky_png (~> 1.2)
compass-core (~> 1.0.2)
@ -57,7 +36,6 @@ GEM
sass (>= 3.3.0, < 3.5)
compass-import-once (1.0.5)
sass (>= 3.2, < 3.5)
daemons (1.2.4)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
@ -65,20 +43,15 @@ GEM
eventmachine (1.2.0.1)
execjs (2.7.0)
ffi (1.9.14)
git-version-bump (0.15.1)
haml (4.0.7)
tilt
hike (1.2.3)
hooks (0.4.1)
uber (~> 0.0.14)
htmlcompressor (0.2.0)
http_parser.rb (0.6.0)
i18n (0.7.0)
json (1.8.3)
kramdown (1.12.0)
less (2.6.0)
commonjs (~> 0.2.7)
libv8 (3.16.14.15)
listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
@ -105,55 +78,49 @@ GEM
rack (>= 1.4.5, < 2.0)
thor (>= 0.15.2, < 2.0)
tilt (~> 1.4.1, < 2.0)
middleman-hashicorp (0.3.4)
bootstrap-sass (~> 3.3)
builder (~> 3.2)
middleman (~> 3.4)
middleman-livereload (~> 3.4)
middleman-syntax (~> 3.0)
redcarpet (~> 3.3)
middleman-livereload (3.4.6)
em-websocket (~> 0.5.1)
middleman-core (>= 3.3)
rack-livereload (~> 0.3.15)
middleman-minify-html (3.4.1)
htmlcompressor (~> 0.2.0)
middleman-core (>= 3.2)
middleman-sprockets (3.5.0)
middleman-core (>= 3.3)
sprockets (~> 2.12.1)
sprockets-helpers (~> 1.1.0)
sprockets-sass (~> 1.3.0)
middleman-syntax (2.1.0)
middleman-syntax (3.0.0)
middleman-core (>= 3.2)
rouge (~> 1.0)
rouge (~> 2.0)
mime-types (3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2016.0521)
mini_portile2 (2.1.0)
minitest (5.9.1)
multi_json (1.12.1)
nokogiri (1.6.8)
nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0)
pkg-config (~> 1.1.7)
padrino-helpers (0.12.8.1)
i18n (~> 0.6, >= 0.6.7)
padrino-support (= 0.12.8.1)
tilt (~> 1.4.1)
padrino-support (0.12.8.1)
activesupport (>= 3.1)
pkg-config (1.1.7)
rack (1.6.4)
rack-contrib (1.4.0)
git-version-bump (~> 0.15)
rack (~> 1.4)
rack-livereload (0.3.16)
rack
rack-protection (1.5.3)
rack
rack-rewrite (1.5.1)
rack-ssl-enforcer (0.2.9)
rack-test (0.6.3)
rack (>= 1.0)
rb-fsevent (0.9.7)
rb-fsevent (0.9.8)
rb-inotify (0.9.7)
ffi (>= 0.5.0)
redcarpet (3.3.4)
ref (2.0.0)
rouge (1.11.1)
rouge (2.0.6)
sass (3.4.22)
sprockets (2.12.4)
hike (~> 1.2)
@ -165,13 +132,6 @@ GEM
sprockets-sass (1.3.1)
sprockets (~> 2.0)
tilt (~> 1.1)
therubyracer (0.12.2)
libv8 (~> 3.16.14.0)
ref
thin (1.7.0)
daemons (~> 1.0, >= 1.0.9)
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
thor (0.19.1)
thread_safe (0.3.5)
tilt (1.4.1)
@ -188,7 +148,7 @@ PLATFORMS
ruby
DEPENDENCIES
middleman-hashicorp!
middleman-hashicorp (= 0.3.4)
BUNDLED WITH
1.13.1
1.13.6

View File

@ -1,10 +1,14 @@
all: build
VERSION?="0.3.4"
init:
bundle
website:
@echo "==> Starting website in Docker..."
@docker run \
--interactive \
--rm \
--tty \
--publish "4567:4567" \
--publish "35729:35729" \
--volume "$(shell pwd):/website" \
hashicorp/middleman-hashicorp:${VERSION}
dev: init
bundle exec middleman server
build: init
bundle exec middleman build
.PHONY: website

View File

@ -1,20 +1,30 @@
# VagrantUp.com
# Vagrant Website
This is the repository for the [Vagrant website](https://www.vagrantup.com).
This is a [Middleman](https://middlemanapp.com) project, which builds a static
site from these source files. The site is hosted fronted by
[Fastly](https://www.fastly.com).
This subdirectory contains the entire source for the [Vagrant Website](https://www.vagrantup.com/).
This is a [Middleman](http://middlemanapp.com) project, which builds a static
site from these source files.
## Contributions Welcome!
If you find a typo or you feel like you can improve the HTML, CSS, or
JavaScript, we welcome contributions. Feel free to open issues or pull
requests like any normal GitHub project, and we will merge it in.
requests like any normal GitHub project, and we'll merge it in.
## Running the Site Locally
Running the site locally is simple. Clone this repo and run `make dev`.
To run the site locally, clone this repository and run:
Then open up `localhost:4567`. Note that some URLs you may need to append
".html" to make them work (in the navigation and such).
```shell
$ make website
```
You must have Docker installed for this to work.
Alternatively, you can manually run the website like this:
```shell
$ bundle
$ bundle exec middleman server
```
Then open up `http://localhost:4567`.

View File

@ -8,15 +8,16 @@
"builders": [
{
"type": "docker",
"image": "ruby:2.3-slim",
"commit": "true"
"image": "hashicorp/middleman-hashicorp:0.3.4",
"discard": "true",
"run_command": ["-d", "-i", "-t", "{{ .Image }}", "/bin/sh"]
}
],
"provisioners": [
{
"type": "file",
"source": ".",
"destination": "/app"
"destination": "/website"
},
{
"type": "shell",
@ -27,16 +28,9 @@
"FASTLY_API_KEY={{ user `fastly_api_key` }}"
],
"inline": [
"apt-get -qq update",
"apt-get -yqq install build-essential curl git libffi-dev wget",
"apt-get -yqq install python-pip",
"pip install s3cmd",
"cd /app",
"bundle check || bundle install --jobs 7",
"bundle check || bundle install",
"bundle exec middleman build",
"/bin/bash ./scripts/deploy.sh"
"/bin/sh ./scripts/deploy.sh"
]
}
]

View File

@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/sh
set -e
PROJECT="vagrant"
@ -28,17 +28,14 @@ if ! command -v "s3cmd" >/dev/null 2>&1; then
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)"
# Get the parent directory of where this script is and cd there
DIR="$(cd "$(dirname "$(readlink -f "$0")")/.." && 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 is surprisingly more
# 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.
@ -106,10 +103,16 @@ fi
# Warm the cache with recursive wget.
if [ -z "$NO_WARM" ]; then
echo "Warming Fastly cache..."
echo ""
echo "If this step fails, there are likely missing or broken assets or links"
echo "on the website. Run the following command manually on your laptop, and"
echo "search for \"ERROR\" in the output:"
echo ""
echo "wget --recursive --delete-after https://$PROJECT_URL/"
echo ""
wget \
--recursive \
--delete-after \
--level 0 \
--quiet \
"https://$PROJECT_URL/"
fi

View File

@ -32,7 +32,7 @@
<div class="navbar-header">
<div class="navbar-brand">
<a class="logo" href="/">Vagrant</a>
<a class="by-hashicorp gray" href="https://www.hashicorp.com/"><span class="svg-wrap">by</span><%= partial "layouts/svg/svg-by-hashicorp" %><%= partial "layouts/svg/svg-hashicorp-logo" %>Hashicorp</a>
<a class="by-hashicorp gray" href="https://www.hashicorp.com/"><span class="svg-wrap">by</span><%= partial "layouts/svg/svg-by-hashicorp" %><%= partial "layouts/svg/svg-hashicorp-logo" %>HashiCorp</a>
</div>
<button class="navbar-toggle gray" type="button">
<span class="sr-only">Toggle navigation</span>