Skip to content

Commit

Permalink
build: remote some vestigial interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
nicks committed Dec 23, 2021
1 parent 84d9b4a commit 1b9d999
Show file tree
Hide file tree
Showing 12 changed files with 55 additions and 84 deletions.
14 changes: 5 additions & 9 deletions internal/build/custom_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,23 +18,19 @@ import (
"github.com/tilt-dev/tilt/pkg/model"
)

type CustomBuilder interface {
Build(ctx context.Context, refs container.RefSet, cb model.CustomBuild) (container.TaggedRefs, error)
}

type ExecCustomBuilder struct {
type CustomBuilder struct {
dCli docker.Client
clock Clock
}

func NewExecCustomBuilder(dCli docker.Client, clock Clock) *ExecCustomBuilder {
return &ExecCustomBuilder{
func NewCustomBuilder(dCli docker.Client, clock Clock) *CustomBuilder {
return &CustomBuilder{
dCli: dCli,
clock: clock,
}
}

func (b *ExecCustomBuilder) Build(ctx context.Context, refs container.RefSet, cb model.CustomBuild) (container.TaggedRefs, error) {
func (b *CustomBuilder) Build(ctx context.Context, refs container.RefSet, cb model.CustomBuild) (container.TaggedRefs, error) {
expectedTag := cb.OutputTag
outputsImageRefTo := cb.OutputsImageRefTo

Expand Down Expand Up @@ -158,7 +154,7 @@ func (b *ExecCustomBuilder) Build(ctx context.Context, refs container.RefSet, cb
return taggedWithDigest, nil
}

func (b *ExecCustomBuilder) readImageRef(ctx context.Context, outputsImageRefTo string) (container.TaggedRefs, error) {
func (b *CustomBuilder) readImageRef(ctx context.Context, outputsImageRefTo string) (container.TaggedRefs, error) {
contents, err := ioutil.ReadFile(outputsImageRefTo)
if err != nil {
return container.TaggedRefs{}, fmt.Errorf("Could not find image ref in output. Your custom_build script should have written to %s: %v", outputsImageRefTo, err)
Expand Down
4 changes: 2 additions & 2 deletions internal/build/custom_builder_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ type fakeCustomBuildFixture struct {
t *testing.T
ctx context.Context
dCli *docker.FakeClient
cb *ExecCustomBuilder
cb *CustomBuilder
tdf *tempdir.TempDirFixture
}

Expand All @@ -221,7 +221,7 @@ func newFakeCustomBuildFixture(t *testing.T) *fakeCustomBuildFixture {

tdf := tempdir.NewTempDirFixture(t)

cb := NewExecCustomBuilder(dCli, clock)
cb := NewCustomBuilder(dCli, clock)

f := &fakeCustomBuildFixture{
t: t,
Expand Down
40 changes: 12 additions & 28 deletions internal/build/docker_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import (
"github.com/tilt-dev/tilt/pkg/model"
)

type dockerImageBuilder struct {
type DockerBuilder struct {
dCli docker.Client

// A set of extra labels to attach to all builds
Expand All @@ -47,34 +47,18 @@ type DockerKubeConnection interface {
WillBuildToKubeContext(kctx k8s.KubeContext) bool
}

type DockerBuilder interface {
DockerKubeConnection

BuildImage(ctx context.Context, ps *PipelineState, refs container.RefSet, spec v1alpha1.DockerImageSpec, filter model.PathMatcher) (container.TaggedRefs, []v1alpha1.DockerImageStageStatus, error)
DumpImageDeployRef(ctx context.Context, ref string) (reference.NamedTagged, error)
PushImage(ctx context.Context, name reference.NamedTagged) error
TagRefs(ctx context.Context, refs container.RefSet, dig digest.Digest) (container.TaggedRefs, error)
ImageExists(ctx context.Context, ref reference.NamedTagged) (bool, error)
}

func DefaultDockerBuilder(b *dockerImageBuilder) DockerBuilder {
return b
}

var _ DockerBuilder = &dockerImageBuilder{}

func NewDockerImageBuilder(dCli docker.Client, extraLabels dockerfile.Labels) *dockerImageBuilder {
return &dockerImageBuilder{
func NewDockerBuilder(dCli docker.Client, extraLabels dockerfile.Labels) *DockerBuilder {
return &DockerBuilder{
dCli: dCli,
extraLabels: extraLabels,
}
}

func (d *dockerImageBuilder) WillBuildToKubeContext(kctx k8s.KubeContext) bool {
func (d *DockerBuilder) WillBuildToKubeContext(kctx k8s.KubeContext) bool {
return d.dCli.Env().WillBuildToKubeContext(kctx)
}

func (d *dockerImageBuilder) DumpImageDeployRef(ctx context.Context, ref string) (reference.NamedTagged, error) {
func (d *DockerBuilder) DumpImageDeployRef(ctx context.Context, ref string) (reference.NamedTagged, error) {
refParsed, err := container.ParseNamed(ref)
if err != nil {
return nil, errors.Wrap(err, "DumpImageDeployRef")
Expand All @@ -100,7 +84,7 @@ func (d *dockerImageBuilder) DumpImageDeployRef(ctx context.Context, ref string)
}

// Tag the digest with the given name and wm-tilt tag.
func (d *dockerImageBuilder) TagRefs(ctx context.Context, refs container.RefSet, dig digest.Digest) (container.TaggedRefs, error) {
func (d *DockerBuilder) TagRefs(ctx context.Context, refs container.RefSet, dig digest.Digest) (container.TaggedRefs, error) {
tag, err := digestAsTag(dig)
if err != nil {
return container.TaggedRefs{}, errors.Wrap(err, "TagImage")
Expand All @@ -125,7 +109,7 @@ func (d *dockerImageBuilder) TagRefs(ctx context.Context, refs container.RefSet,
// TODO(nick) In the future, I would like us to be smarter about checking if the kubernetes cluster
// we're running in has access to the given registry. And if it doesn't, we should either emit an
// error, or push to a registry that kubernetes does have access to (e.g., a local registry).
func (d *dockerImageBuilder) PushImage(ctx context.Context, ref reference.NamedTagged) error {
func (d *DockerBuilder) PushImage(ctx context.Context, ref reference.NamedTagged) error {
l := logger.Get(ctx)

imagePushResponse, err := d.dCli.ImagePush(ctx, ref)
Expand All @@ -148,7 +132,7 @@ func (d *dockerImageBuilder) PushImage(ctx context.Context, ref reference.NamedT
return nil
}

func (d *dockerImageBuilder) ImageExists(ctx context.Context, ref reference.NamedTagged) (bool, error) {
func (d *DockerBuilder) ImageExists(ctx context.Context, ref reference.NamedTagged) (bool, error) {
_, _, err := d.dCli.ImageInspectWithRaw(ctx, ref.String())
if err != nil {
if client.IsErrNotFound(err) {
Expand All @@ -159,7 +143,7 @@ func (d *dockerImageBuilder) ImageExists(ctx context.Context, ref reference.Name
return true, nil
}

func (d *dockerImageBuilder) BuildImage(ctx context.Context, ps *PipelineState, refs container.RefSet, spec v1alpha1.DockerImageSpec, filter model.PathMatcher) (container.TaggedRefs, []v1alpha1.DockerImageStageStatus, error) {
func (d *DockerBuilder) BuildImage(ctx context.Context, ps *PipelineState, refs container.RefSet, spec v1alpha1.DockerImageSpec, filter model.PathMatcher) (container.TaggedRefs, []v1alpha1.DockerImageStageStatus, error) {
platformSuffix := ""
if spec.Platform != "" {
platformSuffix = fmt.Sprintf(" for platform %s", spec.Platform)
Expand Down Expand Up @@ -208,7 +192,7 @@ func (d *dockerImageBuilder) BuildImage(ctx context.Context, ps *PipelineState,

// A helper function that builds the paths to the given docker image,
// then returns the output digest.
func (d *dockerImageBuilder) buildToDigest(ctx context.Context, spec v1alpha1.DockerImageSpec, filter model.PathMatcher, allowBuildkit bool) (digest.Digest, []v1alpha1.DockerImageStageStatus, error) {
func (d *DockerBuilder) buildToDigest(ctx context.Context, spec v1alpha1.DockerImageSpec, filter model.PathMatcher, allowBuildkit bool) (digest.Digest, []v1alpha1.DockerImageStageStatus, error) {
var contextReader io.Reader

// Buildkit allows us to use a fs sync server instead of uploading up-front.
Expand Down Expand Up @@ -276,7 +260,7 @@ func (d *dockerImageBuilder) buildToDigest(ctx context.Context, spec v1alpha1.Do
return d.getDigestFromBuildOutput(ctx, imageBuildResponse.Body)
}

func (d *dockerImageBuilder) getDigestFromBuildOutput(ctx context.Context, reader io.Reader) (digest.Digest, []v1alpha1.DockerImageStageStatus, error) {
func (d *DockerBuilder) getDigestFromBuildOutput(ctx context.Context, reader io.Reader) (digest.Digest, []v1alpha1.DockerImageStageStatus, error) {
result, stageStatuses, err := readDockerOutput(ctx, reader)
if err != nil {
return "", stageStatuses, errors.Wrap(err, "ImageBuild")
Expand Down Expand Up @@ -460,7 +444,7 @@ func messageIsFromBuildkit(msg jsonmessage.JSONMessage) bool {
return msg.ID == "moby.buildkit.trace"
}

func (d *dockerImageBuilder) getDigestFromDockerOutput(ctx context.Context, output dockerOutput) (digest.Digest, error) {
func (d *DockerBuilder) getDigestFromDockerOutput(ctx context.Context, output dockerOutput) (digest.Digest, error) {
if output.aux != nil {
return getDigestFromAux(*output.aux)
}
Expand Down
6 changes: 3 additions & 3 deletions internal/build/test_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ type dockerBuildFixture struct {
ctx context.Context
dCli *docker.Cli
fakeDocker *docker.FakeClient
b *dockerImageBuilder
b *DockerBuilder
registry *exec.Cmd
reaper ImageReaper
containerIDs []wmcontainer.ID
Expand Down Expand Up @@ -66,7 +66,7 @@ func newDockerBuildFixture(t testing.TB) *dockerBuildFixture {
t: t,
ctx: ctx,
dCli: dCli.(*docker.Cli),
b: NewDockerImageBuilder(dCli, labels),
b: NewDockerBuilder(dCli, labels),
reaper: NewImageReaper(dCli),
ps: ps,
}
Expand All @@ -86,7 +86,7 @@ func newFakeDockerBuildFixture(t testing.TB) *dockerBuildFixture {
t: t,
ctx: ctx,
fakeDocker: dCli,
b: NewDockerImageBuilder(dCli, labels),
b: NewDockerBuilder(dCli, labels),
reaper: NewImageReaper(dCli),
ps: ps,
}
Expand Down
2 changes: 1 addition & 1 deletion internal/cli/wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ func provideClock() func() time.Time {
}

type DumpImageDeployRefDeps struct {
DockerBuilder build.DockerBuilder
DockerBuilder *build.DockerBuilder
DockerClient docker.Client
}

Expand Down
26 changes: 11 additions & 15 deletions internal/cli/wire_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -585,7 +585,7 @@ func newFixture(t *testing.T) *fixture {

execer := localexec.NewFakeExecer(t)

db := build.NewDockerImageBuilder(dockerClient, dockerfile.Labels{})
db := build.NewDockerBuilder(dockerClient, dockerfile.Labels{})
r := NewReconciler(cfb.Client, kClient, v1alpha1.NewScheme(), db, kubeContext, st, "default", execer)

return &fixture{
Expand Down
6 changes: 3 additions & 3 deletions internal/engine/buildcontrol/image_build_and_deployer.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func NewKINDLoader(env k8s.Env, clusterName k8s.ClusterName) KINDLoader {
}

type ImageBuildAndDeployer struct {
db build.DockerBuilder
db *build.DockerBuilder
ib *ImageBuilder
k8sClient k8s.Client
env k8s.Env
Expand All @@ -76,8 +76,8 @@ type ImageBuildAndDeployer struct {
}

func NewImageBuildAndDeployer(
db build.DockerBuilder,
customBuilder build.CustomBuilder,
db *build.DockerBuilder,
customBuilder *build.CustomBuilder,
k8sClient k8s.Client,
env k8s.Env,
kubeContext k8s.KubeContext,
Expand Down
6 changes: 3 additions & 3 deletions internal/engine/buildcontrol/image_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@ import (
)

type ImageBuilder struct {
db build.DockerBuilder
custb build.CustomBuilder
db *build.DockerBuilder
custb *build.CustomBuilder
}

func NewImageBuilder(db build.DockerBuilder, custb build.CustomBuilder) *ImageBuilder {
func NewImageBuilder(db *build.DockerBuilder, custb *build.CustomBuilder) *ImageBuilder {
return &ImageBuilder{
db: db,
custb: custb,
Expand Down
8 changes: 3 additions & 5 deletions internal/engine/buildcontrol/wire.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,9 @@ var BaseWireSet = wire.NewSet(

v1alpha1.NewScheme,
k8s.ProvideMinikubeClient,
build.DefaultDockerBuilder,
build.NewDockerImageBuilder,
build.NewExecCustomBuilder,
wire.Bind(new(build.CustomBuilder), new(*build.ExecCustomBuilder)),
wire.Bind(new(build.DockerKubeConnection), new(build.DockerBuilder)),
build.NewDockerBuilder,
build.NewCustomBuilder,
wire.Bind(new(build.DockerKubeConnection), new(*build.DockerBuilder)),

// BuildOrder
NewDockerComposeBuildAndDeployer,
Expand Down
16 changes: 7 additions & 9 deletions internal/engine/buildcontrol/wire_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 1b9d999

Please sign in to comment.