diff options
| author | mcarton <cartonmartin+git@gmail.com> | 2016-07-19 21:25:46 +0200 |
|---|---|---|
| committer | mcarton <cartonmartin+git@gmail.com> | 2016-07-19 21:26:16 +0200 |
| commit | 01c61a714bb532efe4eff4375c5b7931570907fe (patch) | |
| tree | 46426c075b425e6b9e63094eea7eef041cdd19b5 /.github/deploy.sh | |
| parent | c638e5b67911165b451625c4155f01d1a883a47a (diff) | |
Setup automatic push of gh-pages
Diffstat (limited to '.github/deploy.sh')
| -rwxr-xr-x | .github/deploy.sh | 66 |
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" |
