2012-04-16 7 views
15

Abbiamo una configurazione master-slave per Jenkins. Il nostro progetto .NET è costruito da un'istanza Jenkins slave in esecuzione su Windows.Jenkins su Windows e test GUI senza RDC

Ci sono un sacco di test della GUI, tuttavia sembrano funzionare solo se c'è una sessione di connessione desktop remoto (RDC) aperta.

Quando tenta di eseguire i test senza RDC, Jenkins non mostra alcun progresso nei test. Poi, comunque, mi collego al desktop dello Slave e posso vedere la finestra principale dell'applicazione lanciata, tuttavia il framework di test dell'interfaccia utente (White) non può eseguire alcuna azione.

Lo slave Jenkins viene avviato tramite Java Web Start.

Ho letto su diversi siti Web che purtroppo non è possibile eseguire test GUI senza sessione RDC.

Voglio solo confermare che è vero e mi chiedo se c'è qualche soluzione.

risposta

12

Le macchine slave devono essere sul desktop prima che il test possa funzionare correttamente. Abbiamo avuto lo stesso problema.

Soluzione era l'avvio della macchina di prova e l'accesso automatico al desktop. Per garantire che il test SOLO iniziasse dopo che il desktop era disponibile, abbiamo aggiunto un'attività pianificata, impostata per l'esecuzione all'accesso utente, che avvierebbe lo slave Jenkins tramite Java Web Start. In quel modo, Jenkins avrebbe visto lo schiavo solo quando il desktop era in esecuzione. Dopo, tutto ha funzionato bene.

+0

ciao! Grazie per la risposta. Sembra molto simile a quello che ho fatto, tuttavia non ha portato molto successo. Ho anche notato e letto che ogni volta che minimizzi una finestra RDC, i test si fermano. –

+3

RDC crea e distrugge i desktop. Questo fa sì che i test visivi diventino pazzeschi: i loro desktop vengono cancellati e ricreati. Questo metodo di test visivo non funzionerà quando è coinvolto RDC. Quando abbiamo eseguito i nostri test, non ci siamo MAI collegati tramite RDC durante l'esecuzione del test. Dal momento che le nostre macchine di prova erano VM VM VMware, ci siamo collegati tramite VM Console, che mostra cosa vedrebbe il monitor, non il desktop remoto creato quando si connette RDC. –

+0

i nostri test sono in esecuzione su un'istanza di ec2, di solito non ci sono RDC. L'unica ragione per cui stavamo facendo è verificare perché Jenkins si è bloccato durante l'esecuzione dei test. Quando abbiamo una sessione RDC aperta, possiamo vedere che i test sono in esecuzione in Jenkins, altrimenti non succede nulla. –

5

Possiedo un cluster Jenkins che esegue diversi tipi di test della GUI, win32, swing, selenio. Stanno eseguendo migliaia di test in modo non presidiato 24x7. Qui è la mia soluzione:

  1. Come mantenere test GUI viva - RDC non funziona, le applicazioni GUI funzionerà solo bene quando la sessione RDC è attiva. Ho provato diversi modi, quindi non preoccuparti di riprovare. Il test si interromperebbe dopo che la finestra RDC è stata ridotta a icona o scollegata. La soluzione finora è installare VNC Server (sto usando UltraVNC) come servizio e assicurarmi che venga avviato durante l'accesso. Assicurarsi inoltre di non collegarsi alla macchina di prova con RDC, poiché RDC interromperà la sessione VNC. Se possibile, collegalo anche con il client VNC. Ma dipende da te. Quello che faccio è quando ho bisogno di eseguire il debug di qualcosa sulla macchina, lo faccio su RDC e lo riavvio per assicurarmi che siano impostati # 2 e # 3.

  2. accesso Auto - c'è un autologon.exe strumento in SysInternalsSuite, eseguirlo sul vostro schiavo

  3. schiavo registro Auto - Quello che vi serve è Swarm Plugin - https://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin. Scrivi un batch semplice e inserisci scorciatoie nella cartella di avvio. Ogni volta che l'apparecchio si avvia automaticamente, viene registrato automaticamente come slave.

Io in realtà Combine # 2 e # 3 come un semplice file batch:

autologon.exe <user> <domain> <password> 
REM Here to make sure the logonCount is properly generated 
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /t REG_DWORD /d 0xFFFF /f 

start /min java -jar I:\CDC\jenkins\swarm-client-1.9-jar-with-dependencies.jar -executors 1 -fsroot c:\Jenkins -labels "Prod Win7 %ComputerName%" -master <Jenkins URL> -name farm-%ComputerName% -username <username> -password <password> 
+0

Nel caso in cui si preffer la modifica del registro di autologon formale: http://support.microsoft.com/kb/315231 , è possibile utilizzare il file di registro che ho postato qui: http://serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on-power-on/606130#606130 –

1

Come le altre risposte già indicati, si ha la necessità di una configurazione, dove le connessioni finestre macchina automatica per un utente reale , vedi altre risposte per i dettagli. Tuttavia questo non era abbastanza per me, avevo bisogno di eseguire il setup a UltraVNC Server come servizio per risolvere i problemi.

Sul sito è menzionato, che un accesso tramite RDP è un problema per quel trucco, cioè connettersi con VNC o riavviare dopo l'accesso RDP.

6

C'è un altro modo di farlo senza l'accesso automatico di Windows (funziona per me su poche macchine).

1. Vai a Gestione computer -> Servizi e Applicazioni -> Servizi -> Jenkins Slave -> Proprietà
2. In Log On scheda scelto locale account di sistema e controllare consentire ai servizi di interagire con tavolo
3. Chiudi questa finestra facendo clic su OK , e riavviare lo schiavo Jenkins servizio
4. Vai alla directory in cui è il test app e ha scelto Proprietà sul tuo eseguibile applicazione
5. Security Fare clic sulla scheda Modifica ...
6. Nella nuova finestra Clicca Aggiungere ..
7. Nella nuova finestra Clicca Locations ... e ha scelto Computer locale (in alto più opzione nella lista), fare clic su OK
8. Mettere lOCALE SERVIZIO alla zona bianca della finestra e fare clic su Controlla nomi , clicca OK
9. Consentire Controllo del per l'utente, fare clic su OK , chiudere tutte le finestre

che dovrebbe essere tutto. Fammi sapere se funziona per te.

+1

ha funzionato come un incantesimo . –

+0

non ha funzionato su Windows Server 2012 – Skip

+0

Grazie mille! Proprio quello che stavo cercando! – falkon21