Created
February 26, 2014 22:58
-
-
Save jpotts18/9240598 to your computer and use it in GitHub Desktop.
Xamarin Dual build Jenkins Script
This file contains hidden or 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
# Source Path Variables | |
source ~/.bash_profile | |
# uncomment to run this script in your local environment (outside of jenkins) | |
set -x | |
#WORKSPACE="/Users/parivedadeveloper/Projects/pariveda-finternship-2013" | |
# ANDROID | |
ANDROID_FOLDER="${WORKSPACE}/source/BBP.Droid" | |
ANDROID_CSPROJ="${ANDROID_FOLDER}/BBP.Droid.csproj" | |
ANDROID_APK="${ANDROID_FOLDER}/bin/Release/org.buffalobayou.guide-Signed.apk" | |
# GIT CONFIG STUFF | |
BITBUCKET_REPO="https://bitbucket.org/parivedasolutions/pariveda-finternship-2013" | |
PREVIOUS_GIT_COMMITS=`git log --pretty=oneline --abbrev-commit | head -n7` | |
FEEDBACK_AND_LINK="Please respond to this email with feedback \n\n\nfor development details: ${BITBUCKET_REPO}" | |
BUILD_NOTES="${FEEDBACK_AND_LINK} \n\n${PREVIOUS_GIT_COMMITS} \n\nJenkins Build: #${BUILD_NUMBER} \nCommit: ${GIT_COMMIT} \nDATE: ${BUILD_ID}" | |
#IOS | |
IOS_FOLDER="${WORKSPACE}/source/BBP.iOS" | |
IOS_SLN="${WORKSPACE}/source/BBP.iOS.sln" | |
IOS_IPA="${IOS_FOLDER}/bin/iPhone/Ad-Hoc/BBPiOS-1.ipa" | |
IOS_DSYM_FOLDER="${IOS_FOLDER}/bin/iPhone/Ad-Hoc/BBPiOS.app.dSYM" | |
IOS_DSYM_ZIP="${IOS_FOLDER}/bin/iPhone/Ad-Hoc/BBPiOS.app.dSYM.zip" | |
# TEST FLIGHT | |
TESTFLIGHT_UPLOAD_URL="http://testflightapp.com/api/builds.json" | |
API_TOKEN="APIKEY" | |
TEAM_TOKEN="TEAMKEY" | |
DISTRO_LIST="Internship Team" | |
# TODO Notify flag configurable | |
# SHARED PROJECT | |
SHARED_SLN="${WORKSPACE}/source/BBP.Shared.sln" | |
SHARED_BUILD_CONFIGURATION="Debug" | |
SHARED_FOLDER="${WORKSPACE}/source/BBP.Shared" | |
SHARED_CSPROJ="${SHARED_FOLDER}/BBP.Shared.csproj" | |
SHARED_DLL="${SHARED_FOLDER}/bin/${SHARED_BUILD_CONFIGURATION}/BBP.Shared.dll" | |
# TEST PROJECT | |
TEST_FOLDER="${WORKSPACE}/source/BBP.Test" | |
TEST_CSPROJ="${TEST_FOLDER}/BBP.Test.csproj" | |
TEST_DLL="${TEST_FOLDER}/bin/${SHARED_BUILD_CONFIGURATION}/BBP.Test.dll" | |
TEST_OUTPUT_XML="-xml=test-results.xml" | |
MD_TOOL_EXE="/Applications/Xamarin Studio.app/Contents/MacOS/mdtool" | |
# MONO_EXE="/Library/Frameworks/Mono.framework/Versions/2.10.12/bin/mono" | |
MONO_EXE="/Library/Frameworks/Mono.framework/Versions/3.2.5/bin/mono" | |
MONO_PARAMS="--debug" | |
# TODO Figure out which NUnit is the right one | |
# @see http://forums.xamarin.com/discussion/comment/16782/#Comment_16782 | |
# NUNIT_CONSOLE_EXE="/Library/Frameworks/Mono.framework/Versions/2.10.12/lib/mono/2.0/nunit-console.exe" | |
NUNIT_CONSOLE_EXE="/Library/Frameworks/Mono.framework/Versions/2.10.12/lib/mono/4.0/nunit-console.exe" | |
# NUNIT_CONSOLE_EXE="/Library/Frameworks/Mono.framework/Versions/3.0.12/lib/mono/2.0/nunit-console.exe" | |
# NUNIT_CONSOLE_EXE="/Library/Frameworks/Mono.framework/Versions/3.0.12/lib/mono/4.5/nunit-console.exe" | |
# NUNIT_CONSOLE_EXE="/Users/parivedadeveloper/Downloads/monodevelop-4.0.9/external/mdtestharness/nunit-console.exe" | |
# `/Library/Frameworks/Mono.framework/Versions/3.0.12/bin/pkg-config --variable=libdir mono-nunit`/mono/2.0/nunit-console.exe | |
# NUNIT_CONSOLE_PARAMS="--nologo --noshadow" | |
NUNIT_CONSOLE_PARAMS="--noshadow" | |
# TODO JavaScript Unit Tests (if applicable) | |
# mocha sandbox/jenkins-test-projects/mocha-test/basic-test.js -R xunit > sandbox/jenkins-test-projects/mocha-test/results.xml | |
########## | |
# SHARED CODE | |
########## | |
# TODO Build BBP.Shared.csproj | |
rm -rf ${SHARED_FOLDER}/obj | |
rm -rf ${SHARED_FOLDER}/bin | |
# xbuild ${SHARED_CSPROJ} /p:Configuration=${SHARED_BUILD_CONFIGURATION} | |
# TODO Build BBP.Test.csproj | |
rm -rf ${TEST_FOLDER}/obj | |
rm -rf ${TEST_FOLDER}/bin | |
# xbuild ${TEST_CSPROJ} /p:Configuration=${SHARED_BUILD_CONFIGURATION} | |
"${MD_TOOL_EXE}" -v build "--configuration:${SHARED_BUILD_CONFIGURATION}" "${SHARED_SLN}" | |
# "--runtime:3.0.12" | |
# TODO: Run BBP.Test | |
# @see http://curtis.schlak.com/2012/01/06/running-nunit-console-under-mono.html | |
${MONO_EXE} ${MONO_PARAMS} $MONO_OPTIONS ${NUNIT_CONSOLE_EXE} ${NUNIT_CONSOLE_PARAMS} ${TEST_DLL} | |
# ${TEST_OUTPUT_XML} -domain=multiple | |
# TODO Jenkins test reporting | |
########## | |
# ANDROID | |
########## | |
# Android Build | |
rm -rf ${SHARED_FOLDER}/obj | |
rm -rf ${SHARED_FOLDER}/bin | |
rm -rf ${ANDROID_FOLDER}/obj | |
rm -rf ${ANDROID_FOLDER}/bin | |
xbuild "${ANDROID_CSPROJ}" /t:SignAndroidPackage /p:Configuration=Release | |
# TODO Android UI or Integration Tests | |
# Push to TestFlight | |
curl -X POST -v ${TESTFLIGHT_UPLOAD_URL} -F file=@"${ANDROID_APK}" -F api_token="${API_TOKEN}" -F team_token="${TEAM_TOKEN}" -F notes="${BUILD_NOTES}" -F distribution_lists="${DISTRO_LIST}" -F notify=False | |
########## | |
# IOS | |
########## | |
# use mdtool to build project | |
# TODO make the Build configuration configurable from Jenkins (parameterized builds) | |
rm -rf ${WORKSPACE}/source/BBP.iOS/obj | |
rm -rf ${WORKSPACE}/source/BBP.iOS/bin | |
/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool -v build "--runtime:3.2.5" "--configuration:Ad-Hoc" "${IOS_SLN}" | |
# "--runtime:2.10.12" | |
# TODO iOS UI or Integration Tests | |
# Zip the DSYM for upload to TestFlight | |
zip -r "${IOS_DSYM_ZIP}" "${IOS_DSYM_FOLDER}" | |
# Curl to TestFlight | |
curl -X POST -v ${TESTFLIGHT_UPLOAD_URL} -F file=@"${IOS_IPA}" -F dsym=@"${IOS_DSYM_ZIP}" -F api_token="${API_TOKEN}" -F team_token="${TEAM_TOKEN}" -F notes="${BUILD_NOTES}" -F distribution_lists="${DISTRO_LIST}" -F notify=False |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment