2012-04-16 13 views
15

Tenemos una configuración de maestro-esclavo para Jenkins. Nuestro proyecto .NET está construido por una instancia esclava de Jenkins que se ejecuta en Windows.Jenkins en Windows y pruebas GUI sin RDC

Hay un montón de pruebas GUI, sin embargo, solo parecen ejecutarse si hay una sesión de conexión de escritorio remoto (RDC) abierta.

Al intentar ejecutar las pruebas sin RDC, Jenkins no muestra ningún progreso en las pruebas. Luego, sin embargo, me conecto al escritorio del Esclavo y puedo ver la ventana principal de la aplicación lanzada, sin embargo, el marco de prueba de UI (Blanco) no puede realizar ninguna acción.

El esclavo Jenkins se inicia a través de Java Web Start.

He leído en varios sitios web que lamentablemente no es posible ejecutar pruebas de GUI sin sesión de RDC.

Solo quiero confirmar que es cierto y preguntarme si hay alguna solución.

Respuesta

12

Sus máquinas esclavas deben estar en un escritorio antes de que la prueba pueda ejecutarse correctamente. Tuvimos el mismo problema.

La solución consistía en hacer que la máquina de prueba se iniciara y se iniciara automáticamente en el escritorio. Para garantizar que la prueba SÓLO comenzara después de que el escritorio estuviera disponible, agregamos una tarea programada, configurada para ejecutarse al inicio de sesión del usuario, que lanzaría el esclavo Jenkins a través de Java Web Start. De esa forma, Jenkins solo vería al esclavo una vez que se ejecutara el escritorio. Después de eso, todo funcionó bien.

+0

hola! Gracias por la respuesta. Se ve notablemente similar a lo que he estado haciendo, sin embargo, no trajo mucho éxito. También noté y leí que cada vez que minimizas una ventana de RDC, las pruebas se detienen. –

+3

RDC crea y destruye los escritorios. Esto hace que las pruebas visuales se vuelvan locas: sus computadoras de escritorio se limpian y se vuelven a crear. Ese método de prueba visual no funcionará cuando RDC esté involucrado. Cuando realizamos nuestras pruebas, NUNCA nos conectamos a través de RDC durante la prueba. Dado que nuestras máquinas de prueba eran máquinas virtuales VMWare, nos conectamos a través de VM Console, que muestra lo que vería el monitor, no el escritorio remoto creado cuando se conecta RDC. –

+0

nuestras pruebas se ejecutan en una instancia de ec2, normalmente no las usamos. La única razón por la que lo hicimos es comprobar por qué Jenkins se estancó al realizar pruebas. Cuando tenemos una sesión RDC abierta, podemos ver que las pruebas se están ejecutando en Jenkins, de lo contrario no pasa nada. –

5

Tengo un clúster Jenkins ejecutando diferentes tipos de pruebas GUI, win32, swing, selenio. Están ejecutando miles de pruebas de manera desatendida 24x7. Aquí está mi solución:

  1. Cómo mantener viva la prueba GUI - RDC no funciona, las aplicaciones GUI funcionará bien cuando la sesión RDC está activo. Lo intenté de diferentes maneras, así que no te molestes en intentarlo de nuevo. Su prueba se rompió después de que la ventana RDC se minimiza o se desconecta. La solución hasta ahora es instalar el servidor VNC (estoy usando UltraVNC) como servicio y asegurarse de que se inicie durante el inicio de sesión. También asegúrese de no conectarse a su máquina de prueba con RDC, ya que RDC interrumpirá la sesión de VNC. Si es posible, conéctelo con el cliente VNC. Pero eso depende de ti. Lo que hago es cuando necesito depurar algo en la máquina, me conecto con RDC y lo reinicio para asegurarme de que # 2 y # 3 estén configurados.

  2. Auto de inicio de sesión - hay una herramienta en autologon.exe SysInternalsSuite, ejecutarlo en su esclavo

  3. esclavo registro automático - Lo que necesita es Swarm Plugin - https://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin. Escriba un lote simple y coloque un acceso directo en su carpeta de inicio. Cada vez que se inicia la autologon de su máquina, se registra automáticamente como esclavo.

realidad combino # 2 y # 3 como un simple archivo por lotes:

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

Si prefieres la modificación formal de registro de sesión automático: http://support.microsoft.com/kb/315231 , puede utilizar el archivo de datos de registro que he publicado aquí: http://serverfault.com/questions/269832/windows-server-2008-automatic-user-logon-on-power-on/606130#606130 –

1

Como las otras respuestas ya se ha dicho, se necesita una configuración, donde los inicios de sesión de la máquina automática de Windows a un usuario real , mira otras respuestas para más detalles. Sin embargo, esto no fue suficiente para mí, necesitaba setup a UltraVNC Server como ejecución como servicio para resolver los problemas.

En el sitio se menciona que un inicio de sesión a través de RDP es un problema para ese truco, es decir, conectarse con VNC o reiniciar después del acceso RDP.

6

Hay otra manera de hacerlo sin ventanas de inicio de sesión automático (funciona para mí en algunas máquinas).

1. Ir a Administración de equipos -> Servicios y Aplicaciones -> Servicios -> Jenkins Esclavo -> Propiedades
2. En Log On pestaña eligieron cuenta del sistema local y comprobarpermitir que los servicios interactúen con escritorio
3. Cerrar esta ventana haciendo clic en OK , y reinicie el esclavo Jenkins servicio
4. Vaya al directorio donde se encuentra la aplicación de prueba y eligió Propiedades sobre el ejecutable de aplicación
5. En Seguridad pestaña clic en Editar ...
6. En la nueva ventana, haga clic Añadir ..
7. En una nueva ventana Haga clic en Ubicaciones ... y eligió equipo local (opción más alto en la lista), haga clic en OK
8. Ponga SERVICIO lOCAL al área blanca de la ventana y haga clic en Comprobar nombres , haga clic OK
9. Permitir Control absoluto de para ese usuario, haga clic en OK , cierre todas las ventanas

eso se debe todo. Avíseme si funciona para usted.

+1

Trabajó como un encanto . –

+0

no funcionó en Windows Server 2012 – Skip

+0

¡Muchas gracias! ¡Justo lo que estaba buscando! – falkon21

Cuestiones relacionadas