From 4323ba5c739b6dff925318ce845d57859a0c963c Mon Sep 17 00:00:00 2001
From: Seth Vargo
Date: Wed, 2 Aug 2017 13:51:42 -0400
Subject: [PATCH 1/2] Remove people from community section
This is going to be replaced with dynamic content from our CMS in the
future, but we agreed to remove it in the interim.
---
website/source/community.html.erb | 69 -------------------------------
1 file changed, 69 deletions(-)
diff --git a/website/source/community.html.erb b/website/source/community.html.erb
index 883a4d1e6..059386c6f 100644
--- a/website/source/community.html.erb
+++ b/website/source/community.html.erb
@@ -34,72 +34,3 @@ description: |-
Paid HashiCorp training courses
are also available in a city near you. Private training courses are also available.
-
-People
-
- The following people are some of the faces behind Vagrant. They each
- contribute to Vagrant in some core way. Over time, faces may appear and
- disappear from this list as contributors come and go. In addition to
- the faces below, Vagrant is a project by
- HashiCorp, so many HashiCorp
- employees actively contribute to Vagrant.
-
-
-
-
-
-
Mitchell Hashimoto (@mitchellh)
-
- Mitchell Hashimoto is a creator of Vagrant. He has been with the
- Vagrant project from the very beginning. Mitchell is also the
- creator of
- Consul,
- Packer,
- Serf, and
- Otto.
-
-
-
-
-
-
-
-
-
- Jack Pearkes created and maintains many projects at HashiCorp. He
- is the original author of Vagrant Cloud.
- He is also a core committer to Packer
- and maintains many successful
- open source projects
- while also being an employee of
- HashiCorp.
-
-
-
-
-
-
-
-
-
- Seth Vargo is a core committer to Vagrant, with his main focus
- being the core plugin system, pushes, and provisioners. Seth is
- also a contributor to Consul, Packer, and Vault, all while being
- an employee at HashiCorp.
-
-
-
-
-
-
-
-
-
- Paul Hinze is a contributor to Vagrant, with his main focus being
- provisioners and working on HashiCorp's external plugins. He is
- also a core committer to Terraform,
- all while being an employee at HashiCorp.
-
-
-
-
From b409ea90fe1a6d1715e8bc8b2e4198e103114ccb Mon Sep 17 00:00:00 2001
From: Seth Vargo
Date: Wed, 2 Aug 2017 14:11:49 -0400
Subject: [PATCH 2/2] Update deploy process
---
website/packer.json | 11 ++----
website/redirects.txt | 41 ++++++++++++++++++++
website/scripts/deploy.sh | 81 +++++++++++++++++++++++++++++++++++++--
3 files changed, 123 insertions(+), 10 deletions(-)
create mode 100644 website/redirects.txt
diff --git a/website/packer.json b/website/packer.json
index 72b288ed0..fd2618f17 100644
--- a/website/packer.json
+++ b/website/packer.json
@@ -10,15 +10,12 @@
"type": "docker",
"image": "hashicorp/middleman-hashicorp:0.3.28",
"discard": "true",
- "run_command": ["-d", "-i", "-t", "{{ .Image }}", "/bin/sh"]
+ "volumes": {
+ "{{ pwd }}": "/website"
+ }
}
],
"provisioners": [
- {
- "type": "file",
- "source": ".",
- "destination": "/website"
- },
{
"type": "shell",
"environment_vars": [
@@ -30,7 +27,7 @@
"inline": [
"bundle check || bundle install",
"bundle exec middleman build",
- "/bin/sh ./scripts/deploy.sh"
+ "/bin/bash ./scripts/deploy.sh"
]
}
]
diff --git a/website/redirects.txt b/website/redirects.txt
new file mode 100644
index 000000000..d7e6a0c21
--- /dev/null
+++ b/website/redirects.txt
@@ -0,0 +1,41 @@
+#
+# REDIRECTS FILE
+#
+# This is a sample redirect file. Redirects allow individual projects to add
+# their own redirect rules in a declarative manner using Fastly edge
+# dictionaries.
+#
+# FORMAT
+#
+# Redirects are in the format. There must be at least one space between the
+# original path and the new path, and there must be exactly two entries per
+# line.
+#
+# /original-path /new-path
+#
+# GLOB MATCHING
+#
+# Because of the way lookup tables work, there is no support for glob matching.
+# Fastly does not provide a way to iterate through the lookup table, so it is
+# not possible to run through the table and find anything that matches. As such
+# URLs must match directly.
+#
+# More complex redirects are possible, but must be added directly to the
+# configuration. Please contact the release engineering team for assistance.
+#
+# DELETING
+#
+# Deleting items is not supported at this time. To delete an item, contact the
+# release engineering team and they will delete the dictionary item.
+#
+# MISC
+#
+# - Blank lines are ignored
+# - Comments are hash-style
+# - URLs are limited to 256 characters
+# - Items are case-sensitive (please use all lowercase)
+#
+
+/support.html /
+/sponsors.html /
+/about.html /intro/index.html
diff --git a/website/scripts/deploy.sh b/website/scripts/deploy.sh
index 317c8d2fd..d87232f5f 100755
--- a/website/scripts/deploy.sh
+++ b/website/scripts/deploy.sh
@@ -1,9 +1,10 @@
-#!/bin/sh
+#!/usr/bin/env bash
set -e
PROJECT="vagrant"
PROJECT_URL="www.vagrantup.com"
FASTLY_SERVICE_ID="7GrxRJP3PVBuqQbyxYQ0MV"
+FASTLY_DICTIONARY_ID="5Z2ArNwTMBmJXVh0R5h7wO"
# Ensure the proper AWS environment variables are set
if [ -z "$AWS_ACCESS_KEY_ID" ]; then
@@ -93,6 +94,75 @@ if [ -z "$NO_UPLOAD" ]; then
modify "s3://hc-sites/$PROJECT/latest/"
fi
+# Add redirects if they exist
+if [ -z "$NO_REDIRECTS" ] || [ ! test -f "./redirects.txt" ]; then
+ echo "Adding redirects..."
+ fields=()
+ while read -r line; do
+ [[ "$line" =~ ^#.* ]] && continue
+ [[ -z "$line" ]] && continue
+
+ # Read fields
+ IFS=" " read -ra parts <<<"$line"
+ fields+=("${parts[@]}")
+ done < "./redirects.txt"
+
+ # Check we have pairs
+ if [ $((${#fields[@]} % 2)) -ne 0 ]; then
+ echo "Bad redirects (not an even number)!"
+ exit 1
+ fi
+
+ # Check we don't have more than 1000 entries (yes, it says 2000 below, but that
+ # is because we've split into multiple lines).
+ if [ "${#fields}" -gt 2000 ]; then
+ echo "More than 1000 entries!"
+ exit 1
+ fi
+
+ # Validations
+ for field in "${fields[@]}"; do
+ if [ "${#field}" -gt 256 ]; then
+ echo "'$field' is > 256 characters!"
+ exit 1
+ fi
+
+ if [ "${field:0:1}" != "/" ]; then
+ echo "'$field' does not start with /!"
+ exit 1
+ fi
+ done
+
+ # Build the payload for single-request updates.
+ jq_args=()
+ jq_query="."
+ for (( i=0; i<${#fields[@]}; i+=2 )); do
+ original="${fields[i]}"
+ redirect="${fields[i+1]}"
+ echo "Redirecting ${original} -> ${redirect}"
+ jq_args+=(--arg "key$((i/2))" "${original}")
+ jq_args+=(--arg "value$((i/2))" "${redirect}")
+ jq_query+="| .items |= (. + [{op: \"upsert\", item_key: \$key$((i/2)), item_value: \$value$((i/2))}])"
+ done
+
+ # Do not post empty items (the API gets sad)
+ if [ "${#jq_args[@]}" -ne 0 ]; then
+ json="$(jq "${jq_args[@]}" "${jq_query}" <<<'{"items": []}')"
+
+ # Post the JSON body
+ curl \
+ --fail \
+ --silent \
+ --output /dev/null \
+ --request "PATCH" \
+ --header "Fastly-Key: $FASTLY_API_KEY" \
+ --header "Content-type: application/json" \
+ --header "Accept: application/json" \
+ --data "$json"\
+ "https://api.fastly.com/service/$FASTLY_SERVICE_ID/dictionary/$FASTLY_DICTIONARY_ID/items"
+ fi
+fi
+
# Perform a purge of the surrogate key.
if [ -z "$NO_PURGE" ]; then
echo "Purging Fastly cache..."
@@ -118,8 +188,13 @@ if [ -z "$NO_WARM" ]; then
echo "wget --recursive --delete-after https://$PROJECT_URL/"
echo ""
wget \
- --recursive \
--delete-after \
- --quiet \
+ --level inf \
+ --no-directories \
+ --no-host-directories \
+ --no-verbose \
+ --page-requisites \
+ --recursive \
+ --spider \
"https://$PROJECT_URL/"
fi