Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: remote some vestigial interfaces #5332

Merged
merged 1 commit into from
Dec 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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.