github.com/marinho/drone@v0.2.1-0.20140504195434-d3ba962e89a7/pkg/queue/build_runner.go (about) 1 package queue 2 3 import ( 4 "io" 5 "time" 6 7 "github.com/drone/drone/pkg/build" 8 "github.com/drone/drone/pkg/build/docker" 9 "github.com/drone/drone/pkg/build/repo" 10 "github.com/drone/drone/pkg/build/script" 11 ) 12 13 type BuildRunner interface { 14 Run(buildScript *script.Build, repo *repo.Repo, key []byte, privileged bool, buildOutput io.Writer) (success bool, err error) 15 } 16 17 type buildRunner struct { 18 dockerClient *docker.Client 19 timeout time.Duration 20 } 21 22 func NewBuildRunner(dockerClient *docker.Client, timeout time.Duration) BuildRunner { 23 return &buildRunner{ 24 dockerClient: dockerClient, 25 timeout: timeout, 26 } 27 } 28 29 func (runner *buildRunner) Run(buildScript *script.Build, repo *repo.Repo, key []byte, privileged bool, buildOutput io.Writer) (bool, error) { 30 builder := build.New(runner.dockerClient) 31 builder.Build = buildScript 32 builder.Repo = repo 33 builder.Key = key 34 builder.Privileged = privileged 35 builder.Stdout = buildOutput 36 builder.Timeout = runner.timeout 37 38 err := builder.Run() 39 40 return builder.BuildState == nil || builder.BuildState.ExitCode != 0, err 41 }