SeleniumHQ / docker-selenium

Provides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Docker, making it easier to perform browser automation
http://www.selenium.dev/docker-selenium/
Other
7.88k stars 2.51k forks source link

[🚀 Feature]: Add chart template for creating CronJob to insert any tasks #2115

Open VietND96 opened 7 months ago

VietND96 commented 7 months ago

Feature and motivation

There was a discussion around "programmatic solution for killing orphaned sessions after a test suite runs" The orphaned session could be understood as

the session gets left over by the test suite where driver.quit(?) is not called. as we're testing the implementation, I believe there are instances where too many sessions get stuck in the queue and not quite enough nodes to handle them... the queue eventually clears but by the end of a 3 hour test (about 600 cases), i sometimes see one or two running for days"

And there was solution with a script and schedule run in a pipeline, something like

we are still kind of benchmarking, in a lab environment i created a batch script that will curl for the status of all nodes then kill any sessions that have been running for too long (15 mins for now). it runs in the pipeline and uses azure cli to delete the corresponding pod in kubernetes.. since I am using autoscaling a new pod wil automatically take its place

Instead of the pipeline, in Kubernetes has a component CronJob to schedule a task run itself based on cron we set. Add to chart template for CronJob, which executes a shell script implemented, then everyone can simplify inserting their custom scripts for different tasks there.

Usage example

https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/

github-actions[bot] commented 7 months ago

This issue is looking for contributors.

Please comment below or reach out to us through our IRC/Slack/Matrix channels if you are interested.

navin772 commented 4 weeks ago

@VietND96 I would like to take this up and need some more info. Can you explain more about what type of cronjob needs to be added? Do we want a customizable cronjob that can execute tasks defined by the user?

VietND96 commented 2 weeks ago

Hi @navin772, thanks for your interest Actually, the cronjob would be generic, the context I mentioned above is one of the scenarios. For example, the user compose a Bash script to do something, and this script will be added to a K8s CronJob resource

navin772 commented 1 week ago

@VietND96 how do we want to pass the custom script to the cronjob? We can either have volume mounts via hostPath or configMaps. Configmaps are a better option IMO.

Let me know what you think!