screwdriver-cd / screwdriver

An open source build platform designed for continuous delivery.
http://screwdriver.cd
Other
1.02k stars 169 forks source link

Executor Queue MVP #431

Closed stjohnjohnson closed 7 years ago

stjohnjohnson commented 7 years ago

As a user, I want my build to enqueue for later execution if all the execution engines are offline or full, so that I do not have to worry about forgotten builds

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

d2lam commented 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! :)

catto commented 7 years ago

@d2lam 🙆 We have started designing an architecture of the executor queue and are going to share it with you when completed.

d2lam commented 7 years ago

@catto awesome! Thanks for the update!

catto commented 7 years ago

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.

jerryzhang222 commented 7 years ago

Travis queuing

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.

petey commented 7 years ago

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.