1
0
Fork 0
docsearch/docs/scripts/netlify-master

54 lines
2 KiB
Bash
Executable file

#!/usr/bin/env bash
set -e
# This file is run on Netlify for every new push on master (check netlify.toml
# for details)
# ===== STOP IF NO ./DOCS CHANGES
# We compare the date of last modification of the ./docs folder with the date of
# last deploy. If we have recent changes, we deploy, otherwise we skip
DOCS_UPDATE_LOCAL=$(git log -1 --pretty="format:%ct" ./docs)
DOCS_UPDATE_PRODUCTION=$(curl -s https://raw.githubusercontent.com/algolia/docsearch/gh-pages/last_update)
# This is the very first deploy, it should always go through
if ! [[ $DOCS_UPDATE_PRODUCTION =~ ^[0-9]*$ ]]; then
DOCS_UPDATE_PRODUCTION=0
fi
# Check if the local changes are fresher than the last push
TIME_DIFFERENCE=$((DOCS_UPDATE_LOCAL - DOCS_UPDATE_PRODUCTION));
if [[ $TIME_DIFFERENCE -le 0 ]]; then
echo "Documentation deployment is skipped: no new content";
exit 0
fi
# ===== BUILD
cd ./docs
yarn build
# ==== DEPLOY TO GH-PAGES
# Configuring the user making the push
git config --global user.email "algobot@users.noreply.github.com"
git config --global user.name "algobot"
# Adding the remote:
# Note: We need to wrap it in a conditional to not re-add a remote that already
# exists (can happen with the way Netlify caches builds). Attempting to add
# a remote that already exists will generate an error.
if ! git config remote.origin.url > /dev/null; then
git remote add origin git@github.com:algolia/docsearch.git
fi
# Configure the ssh private key
# The public key is configured as part of GitHub Deploy keys.
# The private key is stored in an environment variable (with underscore instead
# of newlines as Netlify does not allow for new lines). We convert it and store
# it in a file, then tell git to use it
mkdir -p ~/.ssh
echo -e "${GITHUB_DEPLOY_KEY_PRIVATE//_/\\n}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
export GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no"
# We add a file that contains the last updated date, to use on the next deploy
echo "$DOCS_UPDATE_LOCAL" > ./dist/last_update
yarn gh-pages -d dist