2010-10-06 4 views
8

Vorrei utilizzare una destinazione di script di esecuzione per taggare la mia revisione in mercurial e caricarla su un server. Ho creato un nuovo obiettivo di script di esecuzione che dipende dall'obiettivo che ha creato la mia app, quindi ho aggiunto due fasi di script di esecuzione direttamente una dopo l'altra.Come interrompere la compilazione se la fase di esecuzione dell'esecuzione dà un errore

Ora la mia domanda: come posso evitare di eseguire la fase di script di esecuzione n. 2 se la fase di esecuzione numero 1 dà un errore (il codice di ritorno dello script non è uguale a 0)?

Il secondo script dovrebbe caricare i file su un server, quindi voglio solo eseguire questa fase se tutto è andato bene fino ad allora.

risposta

11

Una soluzione potrebbe essere quella di fermare generale dell'edificio quando si verificano errori:

XCode -> Preferenze -> Costruzione -> Opzioni di creazione "continuare a costruire dopo gli errori".

Se si deseleziona, la compilazione verrà interrotta se lo script restituisce qualcosa di diverso 0 e il secondo script non verrà eseguito. Se si utilizza xcodebuild, il nome dell'impostazione è "PBXBuildsContinueAfterErrors".

+0

Interessante! È anche possibile impostare un obiettivo specifico? – GorillaPatch

+0

Intendi tramite xcodebuild? Se stai costruendo più target con una sola chiamata, basta dividerli per usare diversi comandi xcodebuild, ognuno con un diverso -target ... e -PBXBuildsContinueAfterErrors = 0/1 –

+1

Ho pensato di più sulle build avviate da Xcode. – GorillaPatch

4

tuo primo script può interrompere la compilazione con "l'uscita 1", in questo modo:

if [ error ] then 
    echo "There are some errors, etc..." 
    exit 1 
fi 
Problemi correlati