Skip to content

bake: support null arg and label value#1449

Merged
tonistiigi merged 2 commits intodocker:masterfrom
crazy-max:bake-var-null
Dec 15, 2022
Merged

bake: support null arg and label value#1449
tonistiigi merged 2 commits intodocker:masterfrom
crazy-max:bake-var-null

Conversation

@crazy-max
Copy link
Copy Markdown
Member

follow-up #1362 (comment)

variable "GO_VERSION" {
  default = ""
}
target "default" {
  args = {
    GO_VERSION = GO_VERSION
  }
}
ARG GO_VERSION="1.18"
FROM golang:${GO_VERSION}
$ docker buildx bake --print
{
  "target": {
    "default": {
      "context": ".",
      "dockerfile": "Dockerfile",
      "args": {
        "GO_VERSION": ""
      }
    }
  }
}

In this example, GO_VERSION arg will always be sent in the request and overwrites the one in the Dockerfile. Therefore build would fail as GO_VERSION will be empty.

With this PR, null type is now handled and will set the arg only if set:

variable "GO_VERSION" {
  default = null
}
target "default" {
  args = {
    GO_VERSION = GO_VERSION
  }
}
$ docker buildx bake --print
{
  "target": {
    "default": {
      "context": ".",
      "dockerfile": "Dockerfile"
    }
  }
}
$ GO_VERSION=1.19 docker buildx bake --print
{
  "target": {
    "default": {
      "context": ".",
      "dockerfile": "Dockerfile",
      "args": {
        "GO_VERSION": "1.19"
      }
    }
  }
}

Signed-off-by: CrazyMax crazy-max@users.noreply.github.com

@crazy-max
Copy link
Copy Markdown
Member Author

crazy-max commented Dec 3, 2022

Including a null value in a string template is not yet supported:

variable "GO_VERSION" {
  default = null
}
target "default" {
  args = {
    GO_VERSION = "${GO_VERSION}-alpine"
  }
}

This will lead to:

Invalid template interpolation value; The expression result is null. Cannot include a null value in a string template.

We could convert to the expected type.

@crazy-max crazy-max added area/bake kind/enhancement New feature or request labels Dec 3, 2022
@crazy-max crazy-max force-pushed the bake-var-null branch 2 times, most recently from deac246 to 2ad47c0 Compare December 5, 2022 21:33
@crazy-max crazy-max changed the title bake: support null args bake: support null arg and labels value Dec 5, 2022
@crazy-max crazy-max changed the title bake: support null arg and labels value bake: support null arg and label value Dec 5, 2022
@crazy-max crazy-max marked this pull request as ready for review December 5, 2022 21:34
@crazy-max crazy-max force-pushed the bake-var-null branch 2 times, most recently from 0eadb81 to 3ba3dc2 Compare December 8, 2022 19:06
@tonistiigi tonistiigi added this to the v0.10.0 milestone Dec 14, 2022
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
Signed-off-by: CrazyMax <crazy-max@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/bake kind/enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants