Skip to content

Commit

Permalink
Improve the docs building process (discordjs#834)
Browse files Browse the repository at this point in the history
* Add a script to automatically build and push docs

This script will checkout the repo in the `docs` branch, then build the
docs locally, copy it to that repo, commit and push. It is designed to
be used in conjunction with Travis.

* Add unencrypted deploy keys to the gitignore

* Make Travis automatically execute the deploy script

* Add the encrypted deploy key

* Update the .travis.yml with the necessary information
  • Loading branch information
meew0 authored and amishshah committed Oct 26, 2016
1 parent 35ac800 commit 0296a71
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 1 deletion.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,4 +35,8 @@ build/Release
node_modules
test/auth.json
examples/auth.json
docs/_build
docs/_build

# Secret keys
docs/deploy/deploy_key
docs/deploy/deploy_key.pub
6 changes: 6 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,9 @@ cache:
directories:
- node_modules
install: npm install
script: bash ./docs/deploy/deploy.sh
env:
global:
- ENCRYPTION_LABEL: "be0b3b658a36"
- COMMIT_AUTHOR_EMAIL: "amishshah.2k@gmail.com"

68 changes: 68 additions & 0 deletions docs/deploy/deploy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#!/bin/bash
# Adapted from https://gist.github.com/domenic/ec8b0fc8ab45f39403dd.

set -e

function build {
node docs/generator/generator.js
}

# Ignore Travis checking PRs
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
echo "deploy.sh: Ignoring PR build"
build
exit 0
fi

# Ignore travis checking other branches irrelevant to users
if [ "$TRAVIS_BRANCH" != "master" -a "$TRAVIS_BRANCH" != "indev" ]; then
echo "deploy.sh: Ignoring push to another branch than master/indev"
build
exit 0
fi

SOURCE=$TRAVIS_BRANCH

# Make sure tag pushes are handled
if [ -n "$TRAVIS_TAG" ]; then
echo "deploy.sh: This is a tag build, proceeding accordingly"
SOURCE=$TRAVIS_TAG
fi

REPO=`git config remote.origin.url`
SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
SHA=`git rev-parse --verify HEAD`

TARGET_BRANCH="docs"

# Checkout the repo in the target branch so we can build docs and push to it
git clone $REPO out -b $TARGET_BRANCH
cd out
cd ..

# Build the docs
build

# Move the generated JSON file to the newly-checked-out repo, to be committed
# and pushed
mv docs/docs.json out/$SOURCE.json

# Commit and push
cd out
git config user.name "Travis CI"
git config user.email "$COMMIT_AUTHOR_EMAIL"

git add .
git commit -m "Docs build: ${SHA}"

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 ../docs/deploy/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
Binary file added docs/deploy/deploy_key.enc
Binary file not shown.

0 comments on commit 0296a71

Please sign in to comment.