2010-12-29 8 views
6

Ho uno script che esegue una pre-elaborazione prima della build effettiva in Xcode. C'è un modo per dire quando Xcode sta facendo un "Build and Archive"? Voglio fare un "svn commit" come parte della fase di archiviazione. Ho scaricato le variabili di ambiente che ci sono durante una compilazione, ma hanno lo stesso aspetto per un archivio come una normale build.Come capire se Xcode sta facendo un "build e archive" in uno script?

Qualcos'altro che può essere controllato per sapere se sta costruendo un archivio?

Qualsiasi altro modo per eseguire automaticamente un commit prima di creare l'archivio? Non voglio fare un commit per ogni build in quanto rende l'albero svn più difficile da navigare su IMO.

Sto usando Xcode 3.2.5.

Grazie! Norm

risposta

0

Ti consiglio di ottenere un sistema di compilazione giornaliero con script indipendente dalla GUI Xcode. Questo renderà solo il trigger svn commit Build e Archive and distribution. È possibile eseguire Costruire e archivio con xcrun comando come descritto qui:

Xcode "Build and Archive" from command line

+0

Penso che possa essere la strada che devo percorrere. Un'altra opzione è usare una configurazione diversa per quando voglio fare un archivio. Mi affido ancora alla scelta della configurazione corretta, ma Xcode potrebbe ancora fare il lavoro. – TejasSoft

2

volevo evitare l'accumulo riga di comando e l'archivio da quando ho letto che non costruisce un file .ipa con il profilo di provisioning incorporato dentro. L'utilizzo di questo rende molto più facile l'invio ai tester.

Quello che ho fatto è stato il seguente:

ho 4 configurazioni. Debug, Release, versione ad hoc e rilascio di App Store.

Uso Debug e Release per creare senza eseguire un commit. Uso Ad Hoc quando voglio inviare ai beta tester e all'App Store per il test finale e la presentazione di App Store.

Ecco il codice che ho aggiunto al mio script di pre-compilazione.

# Get the version number from the .plist file 
VER_NUM=`cat "${SRCROOT}/${INFOPLIST_FILE}" | grep -A 1 CFBundleVersion | grep string | sed 's/]*>//g' | sed 's/^[ ]*//'` 

# Check build type to see if svn commit should be done 
if [ "${BUILD_STYLE}" == "App Store Distribution" ] 
then 
SVN_COMMIT=yes 
fi 

if [ "${BUILD_STYLE}" == "Ad Hoc Distribution" ] 
then 
SVN_COMMIT=yes 
fi 

if [ "${SVN_COMMIT}" == "yes" ] 
then 
echo "Commiting the project to SVN" 
BUILD_TIME=`date` 
svn commit -m "\"Version ${VER_NUM} for ${BUILD_STYLE} ${BUILD_TIME}\"" 
fi 

Questa è stata la mia risposta rapida e sporca al problema. Ci deve essere una soluzione più elegante, ma per ora funzionerà. Se Apple aggiungesse semplicemente una variabile d'ambiente per dimostrare che si tratta di una build di archivio che la risolve.

Problemi correlati