Tengo algunos trabajos en Jenkins que usan Selenium para modificar una base de datos a través del front-end de un sitio web. Si algunos de estos trabajos se ejecutan al mismo tiempo, pueden producirse errores debido a lecturas sucias. ¿Hay alguna forma de forzar ciertos trabajos en Jenkins para que no puedan funcionar al mismo tiempo? Preferiría no tener que colocar o capturar un candado en la base de datos, que podría ser leído o modificado por cualquier número de usuarios que también estén realizando pruebas.¿Hay alguna manera de hacer que los empleos en Jenkins sean mutuamente exclusivos?
Respuesta
Desea el complemento Throttle Concurrent Builds que le permite definir semáforos globales y por nodo.
Cerraduras y pestillos está siendo deprecated a favor de Throttle compilaciones concurrentes.
He probado tanto el complemento locks & latches como el port allocator como formas de lograr lo que estás tratando de hacer. Ninguno funcionó de manera confiable para mí. Las cerraduras & cerraduras funcionaban algunas veces, pero ocasionalmente conseguía trabajos colgados. Usar el asignador de puerto como un truco funcionará a menos que tenga múltiples nodos jenkins, pero la sobrecarga de configuración es algo alta. Lo que finalmente me he decidido a es otro truco, pero funciona de forma fiable y utiliza núcleo Jenkins cosas (no hay plugins):
- crear un nodo esclavo que se ejecuta en la misma caja que el maestro (o no, si tiene un montón de cajas)
- dar a este esclavo un único ejecutor (clave)
- ligar las 2 (o n) los trabajos que no se deben ejecutar en conjunto para este nuevo nodo esclavo
- establecer opcionalmente el uso del esclavo a 'sólo los trabajos atados 'si atornillará sus otros trabajos si se ejecutan en el nuevo esclavo
Como el esclavo tiene solo un ejecutor, los trabajos vinculados a él nunca se pueden ejecutar juntos.
¡Impresionante! Solo una nota para principiantes como yo: para vincular un trabajo, utilice la opción "Restringir dónde se puede ejecutar este proyecto" en la configuración del trabajo. – Linulin
- 1. ¿Artículos de menú seleccionables mutuamente exclusivos?
- 2. ¿Hay alguna manera de que los argumentos sean var en lugar de val?
- 3. ¿Hay alguna manera de hacer que los controles sean transparentes para los eventos del mouse en WPF?
- 4. ¿Hay alguna manera de hacer que las celdas DataGridViewCheckBox sean más pequeñas?
- 5. ¿Hay alguna manera de hacer que TFS se pueda enlazar?
- 6. ¿Hay alguna forma de hacer que los datos json sean leíbles por una araña de Google?
- 7. ¿Hay alguna manera de hacer que python omnicomplete funcione con módulos que no sean del sistema en vim?
- 8. ¿Hay alguna manera de hacer que Guice Grapher trabaje?
- 9. ¿Hay alguna manera de usar Jenkins con Github Pull Requests?
- 10. ¿Hay alguna manera de hacer que un ExecutorService funcione recursivamente?
- 11. ¿Hay alguna manera de hacer que UserControl sea inafocable?
- 12. ¿Hay alguna manera fácil de hacer que ScrollViewer sea "hinchable"?
- 13. ¿Hay alguna manera de hacer que Fabric resuma los resultados en una serie de hosts?
- 14. Ruby on Rails: ¿Hay alguna manera de hacer que los formularios en blanco entren nulos?
- 15. ¿Hay alguna manera de hacer que Excel preserve los atributos XML en el elemento raíz?
- 16. ¿el registro PHP personalizado y el registro de todos los posibles errores son mutuamente exclusivos?
- 17. ¿Hay alguna manera de usar facetas con la gema pg_search
- 18. ¿Hay alguna manera de hacer que un enlace se pueda hacer clic en el terminal OSX?
- 19. Eclipse: ¿hay alguna manera de hacer que Eclipse emita los comandos dados para ejecutar su programa?
- 20. ¿Hay alguna manera de hacer que los robots ignoren cierto texto?
- 21. git-svn: ¿hay alguna manera de hacer que funcione bien con los submódulos, o ignorarlos?
- 22. ¿Hay alguna manera de hacer que git pull actualice automáticamente los submódulos?
- 23. ¿Hay alguna manera de hacer que Firefox ignore los certificados ssl no válidos?
- 24. ¿Hay alguna manera de hacer una verificación parcial en TFS?
- 25. ¿Hay alguna manera de hacer una función atómica en C? .
- 26. ¿Hay alguna manera de hacer arreglos asociativos en REXX?
- 27. ¿Hay alguna manera de hacer que xsd.exe genere clases con ámbito "interno"?
- 28. ¿Hay alguna manera de hacer algo como esto en C#?
- 29. ¿Hay alguna manera de hacer que la unión de C# funcione de manera estática?
- 30. ¿Cómo hacer que los miembros de struct sean privados?
No me di cuenta de la advertencia obsoleta en el complemento Lock & Latches, voy a actualizar mi Jenkins con este nuevo complemento, gracias. –