travis.sh 2.03 KB
repo="https://${GH_TOKEN}@github.com/$TRAVIS_REPO_SLUG.git"

# If this is a pull request, we dont want to continue
if [ "$TRAVIS_PULL_REQUEST" != "false" ] ; then
  echo "Nothing to do on a pull request"
  exit 0
fi

# All Pull requests are to the branch called incoming-pr
# If this is not that branch, the rest of the script is irrelevant
if [ "$TRAVIS_BRANCH" != "incoming-pr" ] ; then
  echo "Nothing to do on the master branch"
  exit 0
fi

git fetch
git branch --all
# This part of the script is run before installing deps or tests
if [ "$1" = "before" ] ; then
	# So this is incoming-pr branch. Need to check if this is exactly same as the master
	# If it is, this branch does not have anything new, so no need to try and build it
	incoming_commit=$(git rev-parse HEAD)
	git checkout --orphan master
	git pull origin master --depth=1
	master_commit=$(git rev-parse HEAD)
	if [ "$incoming_commit" = "$master_commit" ] ; then
		echo "Not required to build this as this is same as the master branch"
		exit 1
	else
		git checkout incoming-pr
		echo "Current branch is - $(git rev-parse HEAD)"
		exit 0
	fi
fi

git checkout incoming-pr
if [ "$1" = "merge" ] ; then
	# If the build was successful, travis after-success will send merge
	echo "Merging incoming-pr to master"
	git checkout master
	git merge incoming-pr --log
	git push $repo master -q 2> /dev/null
else
	# If build failed, travis after-failure will send ./travis.sh revert
	echo "Reverting dev branch to what master was"
	# Save the current changes to a new branch
	echo "Creating a new branch for failed build - incoming-pr-fail-$TRAVIS_BUILD_ID"
	git checkout -b incoming-pr-fail-$TRAVIS_BUILD_ID
	git push $repo incoming-pr-fail-$TRAVIS_BUILD_ID -q 2> /dev/null
	git checkout master
fi

echo "Making incoming-pr same as master"
# Merge or revert is done, so make incoming-pr branch at par with master
# This is done to make it ready for accepting the next pull request
git push $repo --delete incoming-pr -q 2> /dev/null
git branch -D incoming-pr
git branch incoming-pr
git push $repo incoming-pr -q 2> /dev/null