diff --git a/.travis.yml b/.travis.yml index 843e910d51..8c2dd75045 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,10 +8,8 @@ script: after_failure: - "cat /home/travis/builds/dolanmiu/docx/npm-debug.log" after_success: - - git fetch - - git checkout gh-pages - - git merge master --ff -m "merging with master" - - npm run typedoc - - git add . - - git commit -a -m 'updated documentation' - - git push + - bash ./deploy-docs.sh +env: + global: + - ENCRYPTION_LABEL: "ad385fa3b525" + diff --git a/deploy-docs.sh b/deploy-docs.sh new file mode 100644 index 0000000000..60e7ef9903 --- /dev/null +++ b/deploy-docs.sh @@ -0,0 +1,63 @@ +#!/bin/bash +set -e # Exit with nonzero exit code if anything fails + +SOURCE_BRANCH="master" +TARGET_BRANCH="gh-pages" + +function doCompile { + npm run typedoc +} + +# Pull requests and commits to other branches shouldn't try to deploy, just build to verify +if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]; then + echo "Skipping deploy; just doing a build." + doCompile + exit 0 +fi + +# 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 docs/ +# Create a new empty branch if gh-pages doesn't exist yet (should only happen on first deply) +git clone $REPO docs +cd docs +git checkout $TARGET_BRANCH || git checkout --orphan $TARGET_BRANCH +cd .. + +# Clean out existing contents +rm -rf docs/**/* || exit 0 + +# Run our compile script +doCompile + +# Now let's go have some fun with the cloned repo +cd docs +git config user.name "Travis CI" +git config user.email "dolan_miu@hotmail.com" + +# If there are no changes to the compiled out (e.g. this is a README update) then just bail. +if [ -z `git diff --exit-code` ]; then + echo "No changes to the output on this push; exiting." + exit 0 +fi + +# Commit the "changes", i.e. the new version. +# The delta will show diffs between new and old versions. +git add . +git commit -m "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 diff --git a/deploy-key.enc b/deploy-key.enc new file mode 100644 index 0000000000..5152d4baf4 Binary files /dev/null and b/deploy-key.enc differ