2012-11-21 8 views
21

Ich bin ein CI-System mit Jenkins einrichten und stellte fest, dass der Build fehlgeschlagen, da xcodebuild meldet, gibt es keine Schemas, als ich das ausführte Liniexcodebuild Befehle geben andere Ergebnisse, wenn sie von der Befehlszeile ausgeführt werden, als wenn innerhalb von Jenkins ausgeführt

-xcodebuild -workspace XXX -schema NNN.

Ich konnte nicht herausfinden, warum das passieren könnte, also um etwas verschroben mit meinem Arbeitsbereich zu beseitigen Ich habe eine neue Projektvorlage mit XCode erstellt und festgestellt, dass ich einen Unterschied im Verhalten für jeden xcodebuild Befehl und für jeder Arbeitsbereich/jedes Projekt.

wurde Die Vorlage Projekt Schrott genannt und wenn vom Terminal Befehlszeile ausführen ich diesen Befehl zum Beispiel:

xcodebuild -list 

Es gibt

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 

Aber wenn ich laufen xcodebuild -Liste aus Jenkins dann ist die Ausgabe stattdessen:

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. 

Dieses ist das einfachste von jenkins Jobs - al Ich erstelle einen neuen Job, setze ihn auf ein Free-Style-Software-Projekt, füge dann einen Build-Schritt der Execut-Shell hinzu und füge den Befehl xcodebuild -list hinzu, das ist alles.

Warum sagt xcodebuild, dass es keine Schemata gibt? Und warum verhält es sich anders, wenn man innerhalb von Jenkins läuft?

+0

Haben Sie versucht, den Namen ohne Erweiterung zu übergeben? – Eimantas

+0

Ich habe meine Frage überarbeitet, da ich ein viel allgemeineres Problem gefunden habe, indem ich einfach "xcodebuild -list" zum Beispiel verschiedene Ergebnisse von der Befehlszeile aus innerhalb von Jenkins herausbringe. – Gruntcakes

Antwort

32

Es wurde festgestellt, dass Sie nur das Schema für die gemeinsame Nutzung festlegen müssen. Schema> Schemata verwalten Stellen Sie sicher, dass "Freigegeben" aktiviert ist.

Dies wird dann eine neue Ordner/Datei erzeugt aus .../xcshareddata/xcschemes/???. Xcscheme

Aktivieren Sie diese Datei in der Quellcodeverwaltung und Regelung nun auf Ihrem jenkins Box erscheinen soll.

+0

Wo ist dieses Schema> Schemata verwalten? –

+0

Auf XCode 5, klicken Sie auf Ziel (auf der rechten Seite der Schaltfläche "Stop"), dann sollten Sie "Schemata verwalten" sehen – poxion

0

müssen Sie Ihre Xcodeproj/xcuserdata/ .xcuserdatad in Ihrer .gitignore Datei ignorieren. xcodebuild -list erhält Schemata von .xcodeproj/xcuserdata/ .xcuserdatad/xcchemes. Jenkins Server hat keine diese Datei also keine Schemata, Sie können * .xcodeproj in Ihrem Jenkins-Server öffnen, wird es die Datei erstellen und dann xcodebuild -list kann die aktuellen Schemen bekommen.Ich habe das gleiche Problem und durch die Methode gelöst über.