github.com/heimweh/terraform@v0.7.4/website/scripts/deploy.sh (about)

     1  #!/bin/bash
     2  set -e
     3  
     4  PROJECT="terraform"
     5  PROJECT_URL="www.terraform.io"
     6  FASTLY_SERVICE_ID="7GrxRJP3PVBuqQbyxYQ0MV"
     7  
     8  # Ensure the proper AWS environment variables are set
     9  if [ -z "$AWS_ACCESS_KEY_ID" ]; then
    10    echo "Missing AWS_ACCESS_KEY_ID!"
    11    exit 1
    12  fi
    13  
    14  if [ -z "$AWS_SECRET_ACCESS_KEY" ]; then
    15    echo "Missing AWS_SECRET_ACCESS_KEY!"
    16    exit 1
    17  fi
    18  
    19  # Ensure the proper Fastly keys are set
    20  if [ -z "$FASTLY_API_KEY" ]; then
    21    echo "Missing FASTLY_API_KEY!"
    22    exit 1
    23  fi
    24  
    25  # Ensure we have s3cmd installed
    26  if ! command -v "s3cmd" >/dev/null 2>&1; then
    27    echo "Missing s3cmd!"
    28    exit 1
    29  fi
    30  
    31  # Get the parent directory of where this script is and change into our website
    32  # directory
    33  SOURCE="${BASH_SOURCE[0]}"
    34  while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
    35  DIR="$(cd -P "$( dirname "$SOURCE" )/.." && pwd)"
    36  
    37  # Delete any .DS_Store files for our OS X friends.
    38  find "$DIR" -type f -name '.DS_Store' -delete
    39  
    40  # Upload the files to S3 - we disable mime-type detection by the python library
    41  # and just guess from the file extension because it's surprisingly more
    42  # accurate, especially for CSS and javascript. We also tag the uploaded files
    43  # with the proper Surrogate-Key, which we will later purge in our API call to
    44  # Fastly.
    45  if [ -z "$NO_UPLOAD" ]; then
    46    echo "Uploading to S3..."
    47  
    48    # Check that the site has been built
    49    if [ ! -d "$DIR/build" ]; then
    50      echo "Missing compiled website! Run 'make build' to compile!"
    51      exit 1
    52    fi
    53  
    54    s3cmd \
    55      --quiet \
    56      --delete-removed \
    57      --guess-mime-type \
    58      --no-mime-magic \
    59      --acl-public \
    60      --recursive \
    61      --add-header="Cache-Control: max-age=31536000" \
    62      --add-header="x-amz-meta-surrogate-key: site-$PROJECT" \
    63      sync "$DIR/build/" "s3://hc-sites/$PROJECT/latest/"
    64  
    65    # The s3cmd guessed mime type for text files is often wrong. This is
    66    # problematic for some assets, so force their mime types to be correct.
    67    echo "Overriding javascript mime-types..."
    68    s3cmd \
    69      --mime-type="application/javascript" \
    70      --exclude "*" \
    71      --include "*.js" \
    72      --recursive \
    73      modify "s3://hc-sites/$PROJECT/latest/"
    74  
    75    echo "Overriding css mime-types..."
    76    s3cmd \
    77      --mime-type="text/css" \
    78      --exclude "*" \
    79      --include "*.css" \
    80      --recursive \
    81      modify "s3://hc-sites/$PROJECT/latest/"
    82  
    83    echo "Overriding svg mime-types..."
    84    s3cmd \
    85      --mime-type="image/svg+xml" \
    86      --exclude "*" \
    87      --include "*.svg" \
    88      --recursive \
    89      modify "s3://hc-sites/$PROJECT/latest/"
    90  fi
    91  
    92  # Perform a soft-purge of the surrogate key.
    93  if [ -z "$NO_PURGE" ]; then
    94    echo "Purging Fastly cache..."
    95    curl \
    96      --fail \
    97      --silent \
    98      --output /dev/null \
    99      --request "POST" \
   100      --header "Accept: application/json" \
   101      --header "Fastly-Key: $FASTLY_API_KEY" \
   102      --header "Fastly-Soft-Purge: 1" \
   103      "https://api.fastly.com/service/$FASTLY_SERVICE_ID/purge/site-$PROJECT"
   104  fi
   105  
   106  # Warm the cache with recursive wget.
   107  if [ -z "$NO_WARM" ]; then
   108    echo "Warming Fastly cache..."
   109    wget \
   110      --recursive \
   111      --delete-after \
   112      --quiet \
   113      "https://$PROJECT_URL/"
   114  fi