mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2024-11-26 11:51:02 +00:00
4b52fcad1a
Signed-off-by: Abhijit Hiremagalur <abhi@pivotallabs.com>
40 lines
961 B
Go
40 lines
961 B
Go
package queue
|
|
|
|
import (
|
|
"io"
|
|
"time"
|
|
|
|
"github.com/drone/drone/pkg/build"
|
|
"github.com/drone/drone/pkg/build/docker"
|
|
"github.com/drone/drone/pkg/build/repo"
|
|
"github.com/drone/drone/pkg/build/script"
|
|
)
|
|
|
|
type Runner interface {
|
|
Run(buildScript *script.Build, repo *repo.Repo, key []byte, buildOutput io.Writer) (success bool, err error)
|
|
}
|
|
|
|
type runner struct {
|
|
dockerClient *docker.Client
|
|
timeout time.Duration
|
|
}
|
|
|
|
func newRunner(dockerClient *docker.Client, timeout time.Duration) *runner {
|
|
return &runner{
|
|
dockerClient: dockerClient,
|
|
timeout: timeout,
|
|
}
|
|
}
|
|
|
|
func (r *runner) Run(buildScript *script.Build, repo *repo.Repo, key []byte, buildOutput io.Writer) (bool, error) {
|
|
builder := build.New(r.dockerClient)
|
|
builder.Build = buildScript
|
|
builder.Repo = repo
|
|
builder.Key = key
|
|
builder.Stdout = buildOutput
|
|
builder.Timeout = r.timeout
|
|
|
|
err := builder.Run()
|
|
|
|
return builder.BuildState == nil || builder.BuildState.ExitCode != 0, err
|
|
}
|