Closed stjohnjohnson closed 7 years ago
@tk3fftk @catto It would be great if you guys could update the issue with your findings, decisions, progress, etc. Also feel free to let us know if you have any questions/concerns! :)
@d2lam 🙆 We have started designing an architecture of the executor queue and are going to share it with you when completed.
@catto awesome! Thanks for the update!
I talked to @d2lam today, and we have decided that we are going to work on #300 instead of this because we don't have enough time to do.
From what I've seen, Travis uses Sidekiq to queue up builds and perform tasks. They have some code that uses RabbitMQ (AMQP), but I don't see this code used anywhere and it appears that they are trying to phase RabbitMQ out.
We're currently settled on redis/node-resque as the queue solution for this feature.
MVP: The executor queue MVP should perform exactly the same tasks as the current execution mechanism, but have a queue in between the api and the executor
[Edit] Removed stretch goal.
Right now, Screwdriver directly calls the executor when a build is to be started. If the executor target is offline or full, the build is generally dropped with an error message. This isn't a good user experience, especially if the error is hidden due to the build being started from a PR or commit.
Instead, Screwdriver should be pushing planned builds into a queue. And all available executors should be listening on that queue and taking items off when they have capacity. This will allow us to distribute between N number of Docker Swarm clusters for example.
Rules:
Notes:
Edit (petey): Removed work items - See list below