Skip to content

Instantly share code, notes, and snippets.

@taylanpince
Created June 30, 2015 13:26
Show Gist options
  • Save taylanpince/fd6b291d283f5ff09fe8 to your computer and use it in GitHub Desktop.
Save taylanpince/fd6b291d283f5ff09fe8 to your computer and use it in GitHub Desktop.
Travis CI: Check for tag, generate release notes, sign binary and upload to Tryouts for release distribution
#!/bin/sh
if [[ "$TRAVIS_PULL_REQUEST" != "false" ]]; then
echo "This is a pull request. No deployment will be done."
exit 0
fi
if [[ "$TRAVIS_BRANCH" != "master" ]]; then
echo "Testing on a branch other than master. No deployment will be done."
exit 0
fi
CURRENT_TAG=`git describe --exact-match --abbrev=0 --tags`
if [[ $CURRENT_TAG == "" ]]; then
echo "No tags found, no need for a release."
exit 0
fi
echo "***************************"
echo "* Generating Notes *"
echo "***************************"
PREVIOUS_TAG=`git describe HEAD^1 --abbrev=0 --tags`
GIT_HISTORY=`git log --no-merges --format="- %s" $PREVIOUS_TAG..HEAD`
if [[ $PREVIOUS_TAG == "" ]]; then
GIT_HISTORY=`git log --no-merges --format="- %s"`
fi
echo "Current Tag: $CURRENT_TAG"
echo "Previous Tag: $PREVIOUS_TAG"
echo "Release Notes:
$GIT_HISTORY"
# Thanks @djacobs https://gist.github.com/djacobs/2411095
# Thanks @johanneswuerbach https://gist.github.com/johanneswuerbach/5559514
PROVISIONING_PROFILE="$HOME/Library/MobileDevice/Provisioning Profiles/$PROFILE_NAME.mobileprovision"
OUTPUTDIR="$PWD/build/Release-iphoneos"
echo "***************************"
echo "* Signing *"
echo "***************************"
xcrun -log -sdk iphoneos PackageApplication "$OUTPUTDIR/$APP_NAME.app" -o "$OUTPUTDIR/$APP_NAME.ipa" -sign "$DEVELOPER_NAME" -embed "$PROVISIONING_PROFILE"
zip -r -9 "$OUTPUTDIR/$APP_NAME.app.dSYM.zip" "$OUTPUTDIR/$APP_NAME.app.dSYM"
RELEASE_DATE=`date '+%Y-%m-%d %H:%M:%S'`
RELEASE_NOTES="Build: $CURRENT_TAG
Uploaded: $RELEASE_DATE
$GIT_HISTORY"
if [ ! -z "$TRYOUTS_APP_ID" ] && [ ! -z "$TRYOUTS_APP_TOKEN" ]; then
echo ""
echo "************************"
echo "* Uploading to Tryouts *"
echo "************************"
curl https://tryouts.io/applications/$TRYOUTS_APP_ID/upload/ \
-F status="2" \
-F notify="0" \
-F notes="$RELEASE_NOTES" \
-F build="@$OUTPUTDIR/$APP_NAME.ipa" \
-H "Authorization: $TRYOUTS_APP_TOKEN"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment