Last active
April 7, 2017 11:58
-
-
Save rfreitas/6abcbc49034b0563ca6d4c0265ac3387 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
#!/bin/bash | |
# Split on "/", ref: http://stackoverflow.com/a/5257398/689223 | |
REPO_SLUG_ARRAY=(${TRAVIS_REPO_SLUG//\// }) | |
REPO_OWNER=${REPO_SLUG_ARRAY[0]} | |
REPO_NAME=${REPO_SLUG_ARRAY[1]} | |
DEPLOY_PATH=./dist | |
DEPLOY_SUBDOMAIN_UNFORMATTED_LIST=() | |
if [ "$TRAVIS_PULL_REQUEST" != "false" ] | |
then | |
DEPLOY_SUBDOMAIN_UNFORMATTED_LIST+=(${TRAVIS_PULL_REQUEST}-pr) | |
elif [ -n "${TRAVIS_TAG// }" ] #TAG is not empty | |
then | |
#sorts the tags and picks the latest | |
#sort -V does not work on the travis machine | |
#sort -V ref: http://stackoverflow.com/a/14273595/689223 | |
#sort -t ... ref: http://stackoverflow.com/a/4495368/689223 | |
#reverse with sed ref: http://stackoverflow.com/a/744093/689223 | |
#git tags | ignore release candidates | sort versions | reverse | pick first line | |
LATEST_TAG=`git tag | grep -v rc | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n | sed '1!G;h;$!d' | sed -n 1p` | |
echo $LATEST_TAG | |
if [ "$TRAVIS_TAG" == "$LATEST_TAG" ] | |
then | |
DEPLOY_SUBDOMAIN_UNFORMATTED_LIST+=(latest) | |
fi | |
DEPLOY_SUBDOMAIN_UNFORMATTED_LIST+=(${TRAVIS_TAG}-tag) | |
else | |
DEPLOY_SUBDOMAIN_UNFORMATTED_LIST+=(${TRAVIS_BRANCH}-branch) | |
fi | |
for DEPLOY_SUBDOMAIN_UNFORMATTED in "${DEPLOY_SUBDOMAIN_UNFORMATTED_LIST[@]}" | |
do | |
echo $DEPLOY_SUBDOMAIN_UNFORMATTED | |
# replaces "/" or "." with "-" | |
# sed -r is only supported in linux, ref http://stackoverflow.com/a/2871217/689223 | |
# Domain names follow the RFC1123 spec [a-Z] [0-9] [-] | |
# The length is limited to 253 characters | |
# https://en.wikipedia.org/wiki/Domain_Name_System#Domain_name_syntax | |
DEPLOY_SUBDOMAIN=`echo "$DEPLOY_SUBDOMAIN_UNFORMATTED" | sed -r 's/[\/|\.]+/\-/g'` | |
DEPLOY_DOMAIN=https://${DEPLOY_SUBDOMAIN}-${REPO_NAME}-${REPO_OWNER}.surge.sh | |
surge --project ${DEPLOY_PATH} --domain $DEPLOY_DOMAIN; | |
if [ "$TRAVIS_PULL_REQUEST" != "false" ] | |
then | |
# Using the Issues api instead of the PR api | |
# Done so because every PR is an issue, and the issues api allows to post general comments, | |
# while the PR api requires that comments are made to specific files and specific commits | |
GITHUB_PR_COMMENTS=https://api.github.com/repos/${TRAVIS_REPO_SLUG}/issues/${TRAVIS_PULL_REQUEST}/comments | |
curl -H "Authorization: token ${GITHUB_API_TOKEN}" --request POST ${GITHUB_PR_COMMENTS} --data '{"body":"Travis automatic deployment: '${DEPLOY_DOMAIN}'"}' | |
fi | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment