2013-03-19 6 views
12

Odkryłem, że Testflight obsługuje przesyłanie aplikacji za pośrednictwem wywołania API http://testflightapp.com/api/builds.format. Akceptuje pakiet aplikacji, dsyms, informacje o aplikacji i inne.Czy jest jakiś automatyczny skrypt do wysyłania Testflight podczas archiwizacji aplikacji?

Moje pytanie brzmi następująco: Czy jest jakiś automatyczny skrypt dla xcode, który załaduje kompilację do Testflight po operacji "archive"? Udostępnij linki, proszę.

rozwiązaniem jest TUTAJ (Mac OS X 10.8):

1) Postępuj this manual i skrypt instalacyjny po wykonanie

2) Usuń Replace "Echo" struny następnej reguły:

#!/bin/bash 
# 
# (Above line comes out when placing in Xcode scheme) 
# 

API_TOKEN="<YOUR-TESTFLIGHT-API-TOKEN>" 
TEAM_TOKEN="<YOUR-TESTFLIGHT-TEAM-TOKEN>" 
SIGNING_IDENTITY="iPhone Developer" 
PROVISIONING_PROFILE="${HOME}/Library/MobileDevice/Provisioning Profiles/<YOUR-PROFILE-NAME>.mobileprovision" 
LOG="/tmp/testflight.log" 
GROWL="/usr/bin/terminal-notifier -title Xcode -message" 

DATE=$(/bin/date +"%Y-%m-%d") 
ARCHIVE=$(/bin/ls -t "${HOME}/Library/Developer/Xcode/Archives/${DATE}" | /usr/bin/grep xcarchive | /usr/bin/sed -n 1p) 
DSYM="${HOME}/Library/Developer/Xcode/Archives/${DATE}/${ARCHIVE}/dSYMs/${PRODUCT_NAME}.app.dSYM" 
APP="${HOME}/Library/Developer/Xcode/Archives/${DATE}/${ARCHIVE}/Products/Applications/${PRODUCT_NAME}.app" 

#/usr/bin/open -a /Applications/Utilities/Console.app $LOG 

#echo -n "Creating .ipa for ${PRODUCT_NAME}... " > $LOG 
${GROWL} "Creating .ipa for ${PRODUCT_NAME}" 

/bin/rm "/tmp/${PRODUCT_NAME}.ipa" 
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${APP}" -o "/tmp/${PRODUCT_NAME}.ipa" --sign "${SIGNING_IDENTITY}" --embed "${PROVISIONING_PROFILE}" 

#echo "done." >> $LOG 
${GROWL} "Created .ipa for ${PRODUCT_NAME}" 

#echo -n "Zipping .dSYM for ${PRODUCT_NAME}..." >> $LOG 
${GROWL} "Zipping .dSYM for ${PRODUCT_NAME}" 

/bin/rm "/tmp/${PRODUCT_NAME}.dSYM.zip" 
/usr/bin/zip -r "/tmp/${PRODUCT_NAME}.dSYM.zip" "${DSYM}" 

#echo "done." >> $LOG 
${GROWL} "Created .dSYM for ${PRODUCT_NAME}" 

#echo -n "Uploading to TestFlight... " >> $LOG 
${GROWL} "Uploading to TestFlight" 

/usr/bin/curl "http://testflightapp.com/api/builds.json" \ 
-F [email protected]"/tmp/${PRODUCT_NAME}.ipa" \ 
-F [email protected]"/tmp/${PRODUCT_NAME}.dSYM.zip" \ 
-F api_token="${API_TOKEN}" \ 
-F team_token="${TEAM_TOKEN}" \ 
-F notes="Build uploaded automatically from Xcode." 

#echo "done." >> $LOG 
${GROWL} "Uploaded to TestFlight" 
/usr/bin/open "https://testflightapp.com/dashboard/builds/" 

3) Odkryj profil zaopatrzenia w Finderze: przejdź do profili Organazier/Devices/Provision, następnie prawą myszą w profilu i kliknij "Odkryj w Finderze". Skopiuj nazwę profilu i wklej do PROVISIONING_PROFILE zmienną zamiast <YOUR-PROFILE-NAME>

4) Otwórz terminal i zainstalować terminal-notifier:

sudo gem install terminal-notifier

5) Jesteś gotowy :)

+0

nie wydaje się przesłać za mnie. Mimo że otrzymuję ostatnie powiadomienie, Przesłane do Testflight, ale nic nie zostało przesłane. powiadomienie "Przesłane" wydaje się być szybkie do przesłania 15 MB, co sprawia, że ​​podejrzewam, że przesyłanie nie powiodło się bez ostrzeżenia. jakieś wskazówki? dzięki – Bach

+0

Sprawdź profil udostępniania i SIGNING_IDENTITY ma rację. Czy plik pojawia się w/tmp? –

Odpowiedz

1
+1

Prawie tam :) tutaj kilka uwag: 1) aby odsłonić PROVISIONING_PROFILE przejdź do profili Organazier/Devices/Provision, następnie prawą myszką na swoim profilu i kliknij "Reveal in finder"; 2) możesz użyć tylko "iPhone Developer" jako SIGNING_IDENTITY; 3) zamiast GROWL użyj powiadamiania o terminalach. –

2

Oto ładny zbiór narzędzi: http://nomad-cli.com/

Skończyłem używając Shenzen, aby zautomatyzować kompilacje i wdrożenia testflightów.

+0

Shenzen jest dla mnie zepsuty właśnie teraz. Wygląda na to, że nie jest zbyt aktywnie rozwijany. – Alper

3

Ja również stworzył ruby ​​gem do tego, jeśli chcesz zintegrować to do zadań kasę:

gem install testflight_upload

źródła na my github here

+0

dzięki @Miles +1 –

0

Shenzhen zostaje przerwane, można użyć zamiast pilot. To oparte na języku Ruby narzędzie do przesyłania nowych wersji i zarządzania testerami wersji beta. Pod maską używa iTunes Transporter i spaceship.

Powiązane problemy