54 lines
2 KiB
Bash
Executable file
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
|