2012-05-02 12 views
7

Seit einiger Zeit versuche ich herauszufinden, wie man UIAutomation-Tests von Jenkins ausführt - jedes Mal, wenn ich den Build ausführe, baut er gut auf, dann führt er meinen Instrumentenbefehl aus Befehl wie hier beschrieben (Can Instruments be used using the command line?) und Jenkins hängt einfach, gut die ganze Maschine, und wenn ich Aktivitätsmonitor sehe kann ich einen Instrumentenprozess mit 2 GB Speicher sehen.Ausführen von iOS UIAutomation Tests von Jenkins

Wenn ich Jenkins eingerichtet habe, lief ich es original wie von einem versteckten benutzer - dies stellte einige herausforderungen dar, weil jenkins ein deamon war und ich nicht auf den windows server zugreifen konnte. ich entschied mich dann, das jenkins-konto in einen normalen benutzer zu ändern, eingeloggt und instrumente über die kommandozeile zu starten - das funktionierte gut .. aber hatte immer noch kein Glück, es von Jen zu laufen Kins.

ich die jenkins gesetzt haben Konto als Entwickler - kein Admin obwohl

Sie mich bitte, wenn es gibt noch etwas, das ich versuchen könnte, oder wenn jemand diese läuft erfolgreich Ihre Führung würde bekommen hat sehr geschätzt - Dank

+0

Wie laufen Sie (d. H. Starten) Jenkins? –

+0

Es läuft als Deamon, so dass es beim Start lädt - wenn ich es stoppen oder neu starten muss benutze ich launchctl – ChrisH

Antwort

1

Also, wenn Sie es als Daemon ausführen, überprüfen Sie zuerst, was passiert, wenn Sie Jenkins im Vordergrund ausführen Die einfachste Möglichkeit, es zu tun ist mit java -jar jenkins.war [other options] Befehl (see this document).

+0

Brilliant danke - alles läuft ok jetzt - gibt es eine elegantere Art, jenkins so zu starten? – ChrisH

+1

Das einzige, woran ich denken kann, ist, es in ein Skript zu schreiben und dieses Skript von einem Login-Hook aus auszuführen. –

+1

Dann gibt es https://github.com/stisti/jenkins-app – sti

0

Vielleicht können Sie diese https://github.com/houlianpi/robot4ios verwenden.

Dann in jenkins ausführen Shell:

sh setup.sh 
sh runTests.sh ./sample/alltests.js "/Users/komejun/Library/Application Support/iPhone Simulator/5.0/Applications/1622F505-8C07-47E0-B0F0-3A125A88B329/Recipes.app/" 

und der Bericht wird automatisch in ./ynmsk-report/test.xml

+0

Das klingt interessant, wird Robot4ios Setup/Teardown verwalten zwischen den Tests auch? Ich nehme an, die XML-Ausgabe ist kompatibel mit Jenkins, so dass die Ausgabe angezeigt werden kann? – ChrisH

+0

ja, alle, robot4ios verwenden yuitest.so – houlianpi

+1

ynm3k wurde in einer anderen Gabelung https://github.com/douban/ynm3k aktualisiert, die runTests.sh durch test_runner/run ersetzt.Ich bin mir nicht sicher, ob das Beispiel im alten Projekt noch funktionieren könnte. – firebear

4

Jenkins auf OS X erstellen sein wird aus einem launchd Skript gestartet und wird als "Dämon" standardmäßig ausgeführt. Sie müssen den Benutzer im gestarteten Skript ändern.

Zuerst Jenkins bereit zum Herunterfahren (in "Jenkins verwalten" in der GUI).

entladen dann den Auftrag aus launchd, etwa so:

$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist 

Dann bearbeiten Sie die "Username" Eigenschaft in der launchd plist, mit dem Benutzer, die Sie jenkins ausführen möchten. Es gibt auch eine GroupName-Eigenschaft, die Sie entsprechend der Benutzergruppe anpassen müssen/müssen.

Schließlich nachladen Jenkins mit:

$ sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist 

Hoffnung, das hilft!

+0

Das hat perfekt für mich funktioniert. Standardmäßig wurde der Gruppenname auf Daemon und das wurde Absturz des ios Simulator – maschall

+0

Wir haben diese Lösung gefolgt und es funktionierte, aber eine Sache zu beachten - es in neueren Versionen von Xcode scheint, dass Sie den SessionCreate und Wert von Ihrem org entfernen müssen .jenkins-ci.plist siehe hier für weitere Details: http://www.cimgf.com/2015/05/26/setting-up-jenkins-ci-on-a-mac-2/ – Daveloper87