Ho trascorso una buona quantità di tempo formattando il blog menzionato con codice, schermate e così via, che è troppo difficile duplicare qui su Stack Overflow. Detto questo, ho pensato che la comunità avrebbe voluto un aiuto in questa arena (ho faticato per lungo tempo a capire tutto), quindi ho postato questa domanda e la rispettiva risposta. Se pensi ancora che l'intento di questo post sia nefasto, per favore commentalo e lo cancellerò!Come distribuire build automatizzati su TestFlight da un Xcode Bot?
La domanda è: come configurare il mio nuovo server Xcode con Bot per integrare e inviare continuamente build completati ai miei tester tramite volo di prova? Per me, questo sembra il Santo Graal di CI nel mondo iOS, quindi ho passato molto tempo a capirlo.
Il processo implica un lavoro manuale che non sembra essere stato eseguito correttamente dal software server XCode in Mavericks, almeno nella versione iniziale. Mi ci è voluto un sacco di tempo e anche alcuni script per capire tutto e farlo funzionare, e sono felice di condividere i risultati.
Al fine di aggiungere valore a questa domanda, ho pubblicato lo script post-op da eseguire durante il processo di archiviazione di seguito. Il link al mio blog qui sotto fornisce i dettagli passo passo nel caso necessiti di maggiori informazioni.
#!/bin/bash
#
# (Above line comes out when placing in Xcode scheme)
#
# Valid and working as of 10/29/2013
# Xcode 5.0.1, XCode Server
#
API_TOKEN="<Your TesFlight API Token>"
TEAM_TOKEN="<Your TestFlight Team Token>"
DISTRIBUTION_LISTS="<Comma separated TestFlight Distribution List Names for auto deploy>"
PROVISIONING_PROFILE="/Library/Server/Xcode/Data/ProvisioningProfiles/<your file name here>.mobileprovision"
#EXAMPLE:"/Library/Server/Xcode/Data/ProvisioningProfiles/DocLink_InHouse_2013.mobileprovision"
SIGNING_IDENTITY="<your provisioning profile name here>"
#EXAMPLE:"iPhone Distribution: Unwired Revolution, LLC."
# DO NOT EDIT BELOW HERE!
########################################
DSYM="/tmp/Archive.xcarchive/dSYMs/${PRODUCT_NAME}.app.dSYM"
IPA="/tmp/${PRODUCT_NAME}.ipa"
APP="/tmp/Archive.xcarchive/Products/Applications/${PRODUCT_NAME}.app"
# Clear out any old copies of the Archive
echo "Removing old Archive files from /tmp...";
/bin/rm -rf /tmp/Archive.xcarchive*
#Copy over the latest build the bot just created
echo "Copying latest Archive to /tmp/...";
LATESTBUILD=$(ls -1rt /Library/Server/Xcode/Data/BotRuns | tail -1)
/bin/cp -Rp "/Library/Server/Xcode/Data/BotRuns/${LATESTBUILD}/output/Archive.xcarchive" "/tmp/"
echo "Creating .ipa for ${PRODUCT_NAME}"
/bin/rm "${IPA}"
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "${APP}" -o "${IPA}" --sign "${SIGNING_IDENTITY}" --embed "${PROVISIONING_PROFILE}"
echo "Done with IPA creation."
echo "Zipping .dSYM for ${PRODUCT_NAME}"
/bin/rm "${DSYM}.zip"
/usr/bin/zip -r "${DSYM}.zip" "${DSYM}"
echo "Created .dSYM for ${PRODUCT_NAME}"
echo "*** Uploading ${PRODUCT_NAME} to TestFlight ***"
/usr/bin/curl "http://testflightapp.com/api/builds.json" \
-F [email protected]"${IPA}" \
-F [email protected]"${DSYM}.zip" \
-F api_token="${API_TOKEN}" \
-F team_token="${TEAM_TOKEN}" \
-F distribution_lists="${DISTRIBUTION_LISTS}" \
-F notes="Build uploaded automatically from Xcode Server Bot."
echo "TestFlight upload finished!"
Spero che tutto il tempo che ci ho dedicato salverà la comunità collettivamente molto di più!
Ecco il link: http://matt.vlasach.com/xcode-bots-hosted-git-repositories-and-automated-testflight-builds/
Ho parlato all'autore di rendere questo post più "Stack Overflow style". Per un po 'di tempo, ti preghiamo di tenere sotto flaggato o prendere altre azioni per dargli la possibilità di fare delle modifiche. – Pops
Grazie per la nuova aggiunta. Spero che le revisioni siano adatte e siano utili a tutti! – mattv123