2012-05-02 17 views
7

Per un po 'di tempo ho cercato di capire come eseguire i test di UIAutomation da Jenkins - ogni volta che eseguo la build, funziona bene, quindi esegue il comando my instruments (utilizzando lo stesso comando come dettagliato qui (Can Instruments be used using the command line?) e jenkins si blocca, beh l'intera macchina fa, e quando guardo il monitor dell'attività posso vedere un processo di strumenti utilizzando 2GB di memoriaEsecuzione di test UIAutomation iOS da Jenkins

Quando ho impostato jenkins, l'ho eseguito in originale come da un utente nascosto - questo ha presentato alcune sfide con jenkins essere un demone e non essere in grado di accedere al server della finestra. Ho quindi deciso di cambiare l'account jenkins a un utente normale, loggato e eseguito strumenti dalla riga di comando - questo ha funzionato bene ... ma ancora non ha avuto fortuna con l'esecuzione da jen kins.

ho impostato le Jenkins rappresentano come sviluppatore - nessun amministratore se

Si prega di farmi sapere se c'è qualcos'altro che ho potuto provare, o se qualcuno ha avuto questo correre con successo la vostra guida sarebbe molto apprezzato - Grazie

+0

Come si esegue (cioè start up) Jenkins? –

+0

È in esecuzione come un demone, quindi carica all'avvio - se devo fermarlo o riavviarlo, uso launchctl – ChrisH

risposta

1

Quindi, se lo si esegue come un demone, per prima cosa controllare cosa succede se si esegue Jenkins in primo piano Il modo più semplice per farlo è con il comando java -jar jenkins.war [other options] (see this document).

+0

Grazie fantastici - tutto funziona bene ora - c'è un modo più elegante per avviare jenkins come questo? – ChrisH

+1

L'unica cosa a cui riesco a pensare è inserirla in uno script e eseguire quello script da un hook di accesso. –

+1

Poi c'è https://github.com/stisti/jenkins-app – sti

0

Forse è possibile utilizzare questo https://github.com/houlianpi/robot4ios.

Poi nel Jenkins eseguire 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/" 

e la relazione saranno auto create in ./ynmsk-report/test.xml

+0

Sembra interessante, robot4ios gestirà l'installazione/demolizione anche tra le prove? Suppongo che l'output xml sia compatibile con jenkins in modo che l'output possa essere visualizzato? – ChrisH

+0

sì, tutto, robot4ios usa yuitest.so – houlianpi

+1

ynm3k è stato aggiornato in un altro fork https://github.com/douban/ynm3k, che ha sostituito runTests.sh con test_runner/run.Non sono sicuro se il campione nel vecchio progetto potrebbe ancora funzionare. – firebear

4

Jenkins su OS X viene avviato da uno script launchd e verrà eseguito come "demone" per impostazione predefinita. La cosa da fare è cambiare l'utente nello script lanciato.

Per prima cosa, prepara Jenkins all'arresto (in "Gestisci Jenkins" nella GUI).

scaricare poi il lavoro da launchd, così:

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

Poi modificare la proprietà "Username" nel plist launchd, usando l'utente che si desidera eseguire Jenkins. Esiste anche una proprietà GroupName, che potrebbe essere necessario/necessario modificare di conseguenza con il gruppo dell'utente.

Infine, ricaricare Jenkins con:

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

Speranza che aiuta!

+0

Questo ha funzionato perfettamente per me. Per impostazione predefinita, GroupName era impostato su daemon e questo stava bloccando il simulatore ios – maschall

+0

Abbiamo seguito questa soluzione e ha funzionato, ma una cosa da notare - Sembra nelle versioni più recenti di xcode che è necessario rimuovere il valore SessionCreate e dall'organizzazione .jenkins-ci.plist vedi qui per maggiori dettagli: http://www.cimgf.com/2015/05/26/setting-up-jenkins-ci-on-a-mac-2/ – Daveloper87

Problemi correlati