about summary refs log tree commit diff
path: root/.github/deploy.sh
diff options
context:
space:
mode:
authormcarton <cartonmartin+git@gmail.com>2016-07-19 21:25:46 +0200
committermcarton <cartonmartin+git@gmail.com>2016-07-19 21:26:16 +0200
commit01c61a714bb532efe4eff4375c5b7931570907fe (patch)
tree46426c075b425e6b9e63094eea7eef041cdd19b5 /.github/deploy.sh
parentc638e5b67911165b451625c4155f01d1a883a47a (diff)
Setup automatic push of gh-pages
Diffstat (limited to '.github/deploy.sh')
-rwxr-xr-x.github/deploy.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/.github/deploy.sh b/.github/deploy.sh
new file mode 100755
index 00000000000..7b40371e01b
--- /dev/null
+++ b/.github/deploy.sh
@@ -0,0 +1,66 @@
+#!/bin/bash
+# Automatically deploy on gh-pages
+
+set -e
+
+SOURCE_BRANCH="master"
+TARGET_BRANCH="gh-pages"
+
+# Save some useful information
+REPO=$(git config remote.origin.url)
+SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
+SHA=$(git rev-parse --verify HEAD)
+
+# Clone the existing gh-pages for this repo into out/
+(
+    git clone "$REPO" out
+    cd out
+    git checkout $TARGET_BRANCH
+)
+
+# Remove the current doc for master
+rm -rf out/master/ || exit 0
+
+# Make the doc for master
+mkdir out/master/
+cp util/gh-pages/index.html out/master
+./util/export.py out/master/lints.json
+
+# Save the doc for the current tag and point current/ to it
+if [ -n "$TRAVIS_TAG" ]; then
+    cp -r out/master "out/$TRAVIS_TAG"
+    rm -f out/current
+    ln -s "$TRAVIS_TAG" out/current
+fi
+
+# Pull requests and commits to other branches shouldn't try to deploy, just build to verify
+if [ "$TRAVIS_PULL_REQUEST" != "false" ] || [ "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]; then
+    echo "Generated, won't push"
+    exit 0
+fi
+
+# Now let's go have some fun with the cloned repo
+cd out
+git config user.name "Travis CI"
+git config user.email "travis@ci.invalid"
+
+if [ -z "$(git diff --exit-code)" ]; then
+    echo "No changes to the output on this push; exiting."
+    exit 0
+fi
+
+git add .
+git commit -m "Automatic deploy to GitHub Pages: ${SHA}"
+
+# Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc
+ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key"
+ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv"
+ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR}
+ENCRYPTED_IV=${!ENCRYPTED_IV_VAR}
+openssl aes-256-cbc -K "$ENCRYPTED_KEY" -iv "$ENCRYPTED_IV" -in deploy_key.enc -out deploy_key -d
+chmod 600 deploy_key
+eval $(ssh-agent -s)
+ssh-add deploy_key
+
+# Now that we're all set up, we can push.
+git push "$SSH_REPO" "$TARGET_BRANCH"