provide runner to workers, use it for all builds

Signed-off-by: Abhijit Hiremagalur <abhi@pivotallabs.com>
This commit is contained in:
Alex Suraci
2014-02-24 17:51:25 -08:00
committed by Abhijit Hiremagalur
parent ddc8e7a56f
commit 4b52fcad1a
3 changed files with 62 additions and 45 deletions

View File

@@ -1,9 +1,11 @@
package queue
import (
"github.com/drone/drone/pkg/build/docker"
"github.com/drone/drone/pkg/build/script"
. "github.com/drone/drone/pkg/model"
"runtime"
"time"
)
// A Queue dispatches tasks to workers.
@@ -23,11 +25,11 @@ type BuildTask struct {
Script *script.Build
}
var defaultQueue = Start(runtime.NumCPU()) // TEMPORARY; INJECT PLEASE
var defaultQueue = Start(runtime.NumCPU(), newRunner(docker.DefaultClient, 300*time.Second)) // TEMPORARY; INJECT PLEASE
var Add = defaultQueue.Add // TEMPORARY; INJECT PLEASE
func Start(workers int) *Queue {
func Start(workers int, runner Runner) *Queue {
// get the number of CPUs. Since builds
// tend to be CPU-intensive we should only
// execute 1 build per CPU.
@@ -42,7 +44,10 @@ func Start(workers int) *Queue {
// spawn a worker for each CPU
for i := 0; i < workers; i++ {
worker := worker{}
worker := worker{
runner: runner,
}
go worker.work(tasks)
}