From 01c6f7c63a8064007e61c35e09bcf1ba6b9a0d0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=C3=ADna=20Li=C5=A1kov=C3=A1?= <developer@0xADD1E.me> Date: Fri, 19 Aug 2022 14:53:42 +0100 Subject: [PATCH] fix: Fill IMAGE_TAG,etc on Docker builds Resolves #4295 Docs have long stated that these fields are available when using the local docker builder, now they actually are. --- pkg/skaffold/build/docker/docker.go | 11 ++++++++++- pkg/skaffold/docker/image.go | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/pkg/skaffold/build/docker/docker.go b/pkg/skaffold/build/docker/docker.go index 07367d3ee55..d7f17472aa4 100644 --- a/pkg/skaffold/build/docker/docker.go +++ b/pkg/skaffold/build/docker/docker.go @@ -93,7 +93,16 @@ func (b *Builder) Build(ctx context.Context, out io.Writer, a *latest.Artifact, func (b *Builder) dockerCLIBuild(ctx context.Context, out io.Writer, name string, workspace string, dockerfilePath string, a *latest.DockerArtifact, opts docker.BuildOptions, pl v1.Platform) (string, error) { args := []string{"build", workspace, "--file", dockerfilePath, "-t", opts.Tag} - ba, err := docker.EvalBuildArgs(b.cfg.Mode(), workspace, a.DockerfilePath, a.BuildArgs, opts.ExtraBuildArgs) + imgRef, err := docker.ParseReference(opts.Tag) + if err != nil { + return "", fmt.Errorf("couldn't parse image tag: %w", err) + } + imageInfoEnv := map[string]string{ + "IMAGE_REPO": imgRef.Repo, + "IMAGE_NAME": imgRef.Name, + "IMAGE_TAG": imgRef.Tag, + } + ba, err := docker.EvalBuildArgsWithEnv(b.cfg.Mode(), workspace, a.DockerfilePath, a.BuildArgs, opts.ExtraBuildArgs, imageInfoEnv) if err != nil { return "", fmt.Errorf("unable to evaluate build args: %w", err) } diff --git a/pkg/skaffold/docker/image.go b/pkg/skaffold/docker/image.go index 9e179326dd4..836543ce552 100644 --- a/pkg/skaffold/docker/image.go +++ b/pkg/skaffold/docker/image.go @@ -312,7 +312,16 @@ func (l *localDaemon) Build(ctx context.Context, out io.Writer, workspace string if err := l.CheckCompatible(a); err != nil { return "", err } - buildArgs, err := EvalBuildArgs(opts.Mode, workspace, a.DockerfilePath, a.BuildArgs, opts.ExtraBuildArgs) + imgRef, err := ParseReference(opts.Tag) + if err != nil { + return "", fmt.Errorf("couldn't parse image tag: %w", err) + } + imageInfoEnv := map[string]string{ + "IMAGE_REPO": imgRef.Repo, + "IMAGE_NAME": imgRef.Name, + "IMAGE_TAG": imgRef.Tag, + } + buildArgs, err := EvalBuildArgsWithEnv(opts.Mode, workspace, a.DockerfilePath, a.BuildArgs, opts.ExtraBuildArgs, imageInfoEnv) if err != nil { return "", fmt.Errorf("unable to evaluate build args: %w", err) }