bash3boilerplate/website/_bin/deploy.sh
2016-06-21 13:48:08 +02:00

76 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# This file:
#
# - Let's inject.sh inject markdown files into the ./website directory
# - Syncs that to a temporary directory along with a git init
# - (in case of Travis CI) assumes a Git bot identity, and uses an overriden GHPAGES_URL containing its token thanks to `travis encrypt`
# - Force pushes that to the gh-pages branch
#
# Usage:
#
# ./deploy.sh
#
# Based on a template by BASH3 Boilerplate v2.0.0
# Copyright (c) 2013 Kevin van Zonneveld and contributors
# http://bash3boilerplate.sh/#authors
# Exit on error. Append || true if you expect an error.
set -o errexit
# Exit on error inside any functions or subshells.
set -o errtrace
# Do not allow use of undefined vars. Use ${VAR:-} to use an undefined VAR
set -o nounset
# Catch the error in case mysqldump fails (but gzip succeeds) in `mysqldump |gzip`
set -o pipefail
# Turn on traces, useful while debugging but commented out by default
# set -o xtrace
# Set magic variables for current file, directory, os, etc.
__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
__file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
__base="$(basename ${__file} .sh)"
__os="Linux"
if [[ "${OSTYPE:-}" == "darwin"* ]]; then
__os="OSX"
fi
ghpages_repo=${GHPAGES_REPO:-"kvz/bash3boilerplate"}
ghpages_branch=${GHPAGES_BRANCH:-"gh-pages"}
ghpages_url=${GHPAGES_URL:-"git@github.com:${ghpages_repo}.git"}
echo "--> Deploying to GitHub pages.."
${__dir}/inject.sh
if [ "${TRAVIS:-}" = "true" ]; then
git config --global user.name 'lekevbot'
git config --global user.email 'bot@kvz.io'
fi
mkdir -p /tmp/deploy-${ghpages_repo}
# Custom steps
rsync \
--archive \
--delete \
--exclude=.git* \
--exclude=node_modules \
--exclude=lib \
--checksum \
--no-times \
--no-group \
--no-motd \
--no-owner \
./website/ /tmp/deploy-${ghpages_repo} > /dev/null
echo 'This branch is just a deploy target. Do not edit. You changes will be lost.' \
|tee /tmp/deploy-${ghpages_repo}/README.md
(cd /tmp/deploy-${ghpages_repo} \
&& git init && git checkout -B ${ghpages_branch} && git add --all . \
&& git commit -nm "Update ${ghpages_repo} website by ${USER}" \
&& (git remote add origin ${ghpages_url}|| true) \
&& git push origin ${ghpages_branch}:refs/heads/${ghpages_branch} --force) > /dev/null
rm -rf /tmp/deploy-${ghpages_repo}