#!/bin/sh -e # Created by Yaroslav on 10/21/11. # Copyright 2011 nix. All rights reserved. # Script uploads IPA product. Creates appropriate subdirectories. if [[ $# < 6 ]]; then echo "usage: $0 DEPLOY_HOST DEPLOY_DIR DEPLOY_USER DEPLOY_PASSWORD DEPLOY_ITUNESCONNECT_USER DELIVER_DEPLOY" exit 1 fi function zipDSYM { if [ -d "${APP_DSYM}" ]; then cd "${BUILT_PRODUCTS_DIR}" zip -r "$1" "${EXECUTABLE_NAME}.app.dSYM" cd "${currentScriptDir}" fi } DEPLOY_HOST=$1 DEPLOY_DIR=$2 DEPLOY_USER=$3 DEPLOY_PASS=$4 DEPLOY_ITUNESCONNECT_USER=$5 DELIVER_DEPLOY=$6 # load variables currentScriptDir=$(cd "$(dirname "$0")"; pwd) source "${currentScriptDir}/LoadBuildEnvVars.sh" checkWorkingCopyIsClean if [[ ! -f "${IPA_PRODUCT}" ]] && [[ ! -f "${IPA_PRODUCT_RESIGNED_DEVICE}" ]] && [[ ! -f "${IPA_PRODUCT_RESIGNED_ADHOC}" ]] && [[ ! -f "${IPA_PRODUCT_RESIGNED_APPSTORE}" ]]; then echo "error: Nothing to upload. Generate ipa first." exit 1 fi # ******************** # 1) resigned_appstore # ******************** if [[ -f "${IPA_PRODUCT_RESIGNED_APPSTORE}" ]]; then LOCAL_PATH_TO_APP="/tmp/${IPA_BUNDLE_ID_RESIGNED_APPSTORE}" LOCAL_PATH_TO_BUILD="${LOCAL_PATH_TO_APP}/v.${CURRENT_APP_VERSION}_${CURRENT_BUILD_VERSION}" rm -rf "${LOCAL_PATH_TO_BUILD}" | true # cleanup in case of previous releases mkdir -p "${LOCAL_PATH_TO_BUILD}" CONFIGURATION_FULL_PATH="${LOCAL_PATH_TO_BUILD}/${NAME_FOR_DEPLOYMENT_RESIGNED_APPSTORE}" mkdir "${CONFIGURATION_FULL_PATH}" cp "${IPA_PRODUCT_RESIGNED_APPSTORE}" "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.ipa" echo "Starting deliver..." if [ "${DEPLOY_ITUNESCONNECT_USER}" == "unknown" ]; then echo "DEPLOY_ITUNESCONNECT_USER isn't specified, skipping deliver..." else if [ "${DELIVER_DEPLOY}" == 1 ]; then deliver testflight "${IPA_PRODUCT_RESIGNED_APPSTORE}" -u "${DEPLOY_ITUNESCONNECT_USER}" else deliver testflight "${IPA_PRODUCT_RESIGNED_APPSTORE}" -u "${DEPLOY_ITUNESCONNECT_USER}" --skip-deploy fi fi zipDSYM "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.app.dSYM.zip" ${currentScriptDir}/Deploy.sh "${DEPLOY_HOST}" "${DEPLOY_DIR}" "${DEPLOY_USER}" "${DEPLOY_PASS}" "${LOCAL_PATH_TO_APP}" fi # ********* # 2) device # ********* if [[ -f "${IPA_PRODUCT}" ]]; then LOCAL_PATH_TO_APP="/tmp/${IPA_BUNDLE_ID}" LOCAL_PATH_TO_BUILD="${LOCAL_PATH_TO_APP}/v.${CURRENT_APP_VERSION}_${CURRENT_BUILD_VERSION}" rm -rf "${LOCAL_PATH_TO_BUILD}" | true # cleanup in case of previous releases mkdir -p "${LOCAL_PATH_TO_BUILD}" CONFIGURATION_FULL_PATH="${LOCAL_PATH_TO_BUILD}/${NAME_FOR_DEPLOYMENT}" mkdir "${CONFIGURATION_FULL_PATH}" cp "${IPA_PRODUCT}" "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.ipa" zipDSYM "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.app.dSYM.zip" ${currentScriptDir}/Deploy.sh "${DEPLOY_HOST}" "${DEPLOY_DIR}" "${DEPLOY_USER}" "${DEPLOY_PASS}" "${LOCAL_PATH_TO_APP}" fi # ****************** # 3) resigned_device # ****************** if [[ -f "${IPA_PRODUCT_RESIGNED_DEVICE}" ]]; then LOCAL_PATH_TO_APP="/tmp/${IPA_BUNDLE_ID_RESIGNED_DEVICE}" LOCAL_PATH_TO_BUILD="${LOCAL_PATH_TO_APP}/v.${CURRENT_APP_VERSION}_${CURRENT_BUILD_VERSION}" rm -rf "${LOCAL_PATH_TO_BUILD}" | true # cleanup in case of previous releases mkdir -p "${LOCAL_PATH_TO_BUILD}" CONFIGURATION_FULL_PATH="${LOCAL_PATH_TO_BUILD}/${NAME_FOR_DEPLOYMENT_RESIGNED_DEVICE}" mkdir "${CONFIGURATION_FULL_PATH}" cp "${IPA_PRODUCT_RESIGNED_DEVICE}" "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.ipa" zipDSYM "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.app.dSYM.zip" ${currentScriptDir}/Deploy.sh "${DEPLOY_HOST}" "${DEPLOY_DIR}" "${DEPLOY_USER}" "${DEPLOY_PASS}" "${LOCAL_PATH_TO_APP}" fi # ***************** # 4) resigned_adhoc # ***************** if [[ -f "${IPA_PRODUCT_RESIGNED_ADHOC}" ]]; then LOCAL_PATH_TO_APP="/tmp/${IPA_BUNDLE_ID_RESIGNED_ADHOC}" LOCAL_PATH_TO_BUILD="${LOCAL_PATH_TO_APP}/v.${CURRENT_APP_VERSION}_${CURRENT_BUILD_VERSION}" rm -rf "${LOCAL_PATH_TO_BUILD}" | true # cleanup in case of previous releases mkdir -p "${LOCAL_PATH_TO_BUILD}" CONFIGURATION_FULL_PATH="${LOCAL_PATH_TO_BUILD}/${NAME_FOR_DEPLOYMENT_RESIGNED_ADHOC}" mkdir "${CONFIGURATION_FULL_PATH}" cp "${IPA_PRODUCT_RESIGNED_ADHOC}" "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.ipa" zipDSYM "${CONFIGURATION_FULL_PATH}/${EXECUTABLE_NAME}.app.dSYM.zip" ${currentScriptDir}/Deploy.sh "${DEPLOY_HOST}" "${DEPLOY_DIR}" "${DEPLOY_USER}" "${DEPLOY_PASS}" "${LOCAL_PATH_TO_APP}" fi