2012-11-21 19 views
21

Sto configurando un sistema di elementi di configurazione utilizzando Jenkins e trovavo che la compilazione stava fallendo perché i report di xcodebuild non c'erano schemi quando stavo eseguendo il lineI comandi xcodebuild danno risultati diversi quando vengono eseguiti dalla riga di comando rispetto a quando vengono eseguiti da Jenkins

-xcodebuild -workspace XXX -scheme NNN.

non riuscivo a capire perché questo potrebbe accadere, in modo da eliminare qualcosa di irregolare essere con il mio lavoro ho creato un nuovo modello di progetto utilizzando XCode e ha scoperto che io sono sempre una differenza di comportamento per qualsiasi comando xcodebuild e per qualsiasi spazio di lavoro/progetto.

Il progetto modello è stato chiamato cascami e se dalla linea di comando terminale corro questo comando per esempio:

xcodebuild -list 

Produce

Information about project "scrap": 
    Targets: 
     scrap 

    Build Configurations: 
     Debug 
     Release 

    If no build configuration is specified and -scheme is not passed then "Release" is used. 

    Schemes: 
     scrap 

Ma se corro xcodebuild -elenco dall'interno Jenkins quindi l'output è:

Building in workspace /Users/Shared/Jenkins/Home/workspace/scrap 
[scrap] $ /bin/sh -xe /var/folders/ph/s6dvlfq9769741g_yzmjlmz000007c/T/hudson3765407964219991487.sh 
+ xcodebuild -list 
Information about project "scrap": 
    Targets: 
     scrap 

    Build Configurations: 
     Debug 
     Release 

    If no build configuration is specified and -scheme is not passed then "Release" is used. 

    This project contains no schemes. 

Questo è il più semplice dei lavori jenkins - al Io faccio è creare un nuovo lavoro, impostarlo su un progetto software libero, quindi aggiungere un passo di generazione della shell Execut e aggiungere il comando xcodebuild -list, il gioco è fatto.

Perché xcodebuild dice che non ci sono schemi quando ci sono? E perché si comporta in modo diverso quando viene eseguito da Jenkins?

+0

Hai provato a passare il nome senza estensione? – Eimantas

+0

Ho rivisto la mia domanda perché ho trovato un problema molto più generico, semplicemente facendo "xcodebuild -list", ad esempio, fornisce risultati diversi dalla riga di comando come da Jenkins. – Gruntcakes

risposta

32

Capito che tutto ciò che devi fare è impostare lo schema da condividere. Schema> Gestione schemi Assicurarsi che "Condivisa" sia selezionata.

Questo sarà quindi generare una nuova cartella/file di ...///???. Xcscheme

Controllare questo file xcshareddata xcschemes nel vostro controllo del codice sorgente e lo schema dovrebbe ora comparire sulla propria macchina Jenkins.

+0

Dove si trova questo schema> Gestisci schemi? –

+0

Su XCode 5, fai clic su Target (a destra del pulsante "stop"), quindi dovresti vedere "Gestisci schemi" – poxion

0

devi ignorare il tuo .xcodeproj/xcuserdata/ .xcuserdatad nel tuo file .gitignore. xcodebuild -list ottenere schemi da .xcodeproj/xcuserdata/ .xcuserdatad/xcschemes. jenkins server non ha questo file quindi non ottenere schemi, è possibile aprire * .xcodeproj nel server jenkins, creerà il file e quindi xcodebuild -list può ottenere gli schemi attuali. Ho lo stesso problema e risolto con il metodo sopra.

Problemi correlati