Created
May 16, 2017 13:57
-
-
Save seanr/779895e2f946d712007ada720491f103 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Checkout a local branch and build a Pantheon multi-dev environment from it. | |
set -e | |
# Load variables. | |
source "$(dirname "$0")/_vars" | |
# Clean up the build. | |
cleanup() { | |
if [[ -d ${RELEASE_DIRECTORY} && ${RELEASE_DIRECTORY} == *"pantheon"* && -d ${CURRENT_DIRECTORY} && ! -z ${GIT_CURRENT_BRANCH} ]]; then | |
rm -rf "${RELEASE_DIRECTORY}" | |
cd "${CURRENT_DIRECTORY}" | |
git checkout --quiet "${GIT_CURRENT_BRANCH}" | |
fi | |
} | |
# Script Usage | |
usage() { | |
echo "Build a Pantheon multi-dev environment from a local repo BRANCH_NAME" | |
echo " " | |
echo "./scripts/docker/multidev-create BRANCH_NAME" | |
echo " " | |
} | |
BRANCH_NAME="$1" | |
if [[ -z $BRANCH_NAME ]]; then | |
usage | |
exit 1 | |
else | |
HASH=$(git rev-parse --verify "$BRANCH_NAME" 2> /dev/null || true) | |
if [ ! -n "$HASH" ]; then | |
echo -e "${COLOR_ERROR}The local branch $BRANCH_NAME could not be found${COLOR_RESET}" | |
exit 1 | |
else | |
# @TODO: Add option for cloned environment. | |
PANTHEON_SITE=attn | |
CLONED_ENVIRONMENT="$PANTHEON_SITE.live" | |
MULTIDEV_LIMIT=10 | |
MULTIDEV_SITE_COUNT=$("${SCRIPTS_DIRECTORY}/terminus" multidev:list --format=string "$PANTHEON_SITE" | wc -l | xargs) | |
if [ "$MULTIDEV_SITE_COUNT" -ge "$MULTIDEV_LIMIT" ]; then | |
echo -e "${COLOR_ERROR}The limit ($MULTIDEV_LIMIT) of multidev sites has been hit. ${COLOR_RESET}" | |
"${SCRIPTS_DIRECTORY}/terminus" multidev:list "$PANTHEON_SITE" | |
exit 1 | |
fi | |
echo -e "${COLOR_HILIGHT}Creating Pantheon repo branch for multi-dev deployment...${COLOR_RESET}" | |
if [[ ! ${#BRANCH_NAME} -lt 12 || ${BRANCH_NAME} =~ [^a-zA-Z0-9-] ]]; then | |
PANTHEON_BRANCH=${BRANCH_NAME:0:11} | |
PANTHEON_BRANCH=${PANTHEON_BRANCH//[^a-zA-Z0-9-]/-} | |
echo -e "${COLOR_WARNING}NOTE: The envionment will be named ${PANTHEON_BRANCH} to fit Pantheon's multi-dev requirements ${COLOR_RESET}" | |
else | |
PANTHEON_BRANCH=${BRANCH_NAME} | |
fi | |
# Build the new envionment locally | |
echo -e "${COLOR_HILIGHT}Checking out ${BRANCH_NAME} for build...${COLOR_RESET}" | |
GIT_CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD) | |
CURRENT_DIRECTORY=$(pwd) | |
git checkout --quiet "${BRANCH_NAME}" | |
RELEASE_DIRECTORY=${BUILD_DIRECTORY_NAME}-pantheon-${PANTHEON_BRANCH} | |
if [ -d "${RELEASE_DIRECTORY}" ]; then | |
rm -rf "${RELEASE_DIRECTORY}" | |
fi | |
mkdir -p "${RELEASE_DIRECTORY}" | |
"${SCRIPTS_DIRECTORY}/build" -c -s "${REPOSITORY_DIRECTORY}" -o "${REPOSITORY_DIRECTORY}/${RELEASE_DIRECTORY}" | |
cd "${RELEASE_DIRECTORY}" || exit | |
git init | |
git remote add deploy "${DEPLOY_REPOSITORY_URL}" | |
git checkout --quiet -b "${PANTHEON_BRANCH}" | |
git add --force . | |
git commit --message "Push [${BRANCH_NAME}] multi-dev build branch" &> /dev/null | |
git push deploy "${PANTHEON_BRANCH}" --set-upstream --force | |
cd "${CURRENT_DIRECTORY}" || exit | |
# Build the new multi-dev envionment and clean up the build. | |
echo -e "${COLOR_HILIGHT}Building Pantheon multi-dev environment from $CLONED_ENVIRONMENT...${COLOR_RESET}" | |
"${SCRIPTS_DIRECTORY}/terminus" -e multidev:create ${CLONED_ENVIRONMENT} "${PANTHEON_BRANCH}" || true | |
echo -e "${COLOR_SUCCESS}Pantheon multi-dev environment ${PANTHEON_BRANCH}-${PANTHEON_SITE}.pantheonsite.io created.${COLOR_RESET}" | |
cleanup | |
exit 0 | |
fi | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment