#!/bin/bash -eu # This script should be launched from the release branch (studio23 or vahana12 for instance). # It will: # - Merge this branch into the stable branch and push to this branch # - Create the tag that you set in argument and push this tag # - Create a branch that merges the release branch to master and push it # (After that you should create the pull request manually) PRODUCT="${1-}" TAG="${2-}" CURRENT_BRANCH="$(git rev-parse --abbrev-ref HEAD)" STABLE_BRANCH="stable-${PRODUCT}" MERGE_BRANCH="merge_${CURRENT_BRANCH}_master" if [ -z "${PRODUCT}" ] || [ -z "${TAG}" ]; then echo "Usage:" echo "./release.sh PRODUCT TAG" echo "./release.sh studio Studio-v2.4.0" echo "./release.sh vahanaVR VahanaVR-v1.2.1" exit 1 fi if [ "${PRODUCT}" = "studio" ]; then PRODUCT="Studio" elif [ "${PRODUCT}" = "vahanaVR" ]; then PRODUCT="VahanaVR" else echo "Product should be studio or vahanaVR" exit 1 fi REGEX="${PRODUCT}-v[0-9]\.[0-9]\.[0-9](\.(RC|beta|alpha)[0-9])?$" if [[ "${TAG}" =~ ${REGEX} ]]; then echo "tag is ${TAG}" else echo "invalid tag, format should be ${REGEX}" echo "${PRODUCT}-v2.1.1" echo "${PRODUCT}-v1.4.0.alpha1" echo "${PRODUCT}-v2.3.0.beta2" echo "${PRODUCT}-v1.3.4.RC3" exit 1 fi echo "current branch is ${CURRENT_BRANCH}" echo "stable branch is ${STABLE_BRANCH}" echo "the merge pull request is ${MERGE_BRANCH}" echo "All sounds good? [y/N]" read val if [ "${val}" != "y" ]; then exit 0 fi git checkout "${STABLE_BRANCH}" git pull --rebase git merge "${CURRENT_BRANCH}" git tag -a "${TAG}" git push --tags git push git checkout master git pull --rebase git checkout -b "${MERGE_BRANCH}" git merge "${STABLE_BRANCH}" git push --set-upstream origin "${MERGE_BRANCH}"