func newBuilder(c *cli.Context) builder.Builder { db, err := docker.NewBuilderFromEnv() if err != nil { must(err) } db.DryRun = c.Bool("dry") db.Image = c.String("builder.image") g := builder.NewGitHubClient(c.String("github.token")) var backend builder.Builder = builder.UpdateGitHubCommitStatus(db, g, fmt.Sprintf(logsURLTemplate, c.String("url"))) if uri := c.String("stats"); uri != "" { u := urlParse(uri) switch u.Scheme { case "dogstatsd": c, err := statsd.New(u.Host) must(err) backend = datadog.WithStats( backend, c, ) default: must(fmt.Errorf("Unknown stats backend: %v", u.Scheme)) } } b := worker.NewBuilder(backend) b.Reporter = newReporter(c) return b }
func TestBuilder(t *testing.T) { c, err := statsd.New("localhost:8125") assert.NoError(t, err) b := datadog.WithStats( builder.BuilderFunc(func(ctx context.Context, w io.Writer, options builder.BuildOptions) (string, error) { return "remind101/acme-inc:1234", nil }), c, ) _, err = b.Build(context.Background(), ioutil.Discard, builder.BuildOptions{ Repository: "remind101/acme-inc", Branch: "master", Sha: "1234", }) assert.NoError(t, err) }