docker / buildx

Docker CLI plugin for extended build capabilities with BuildKit
Apache License 2.0
3.33k stars 448 forks source link

Bake: empty block should equal `null`, not empty string #2529

Open dvdksn opened 2 weeks ago

dvdksn commented 2 weeks ago

Contributing guidelines

I've found a bug and checked that ...

Description

with variable "FOO" {}, I think that FOO should evaluate to null, not an empty string.

Expected behaviour

variable "foo" {}

target "default" {
  args = {
    isNull = equal(foo, null)
    isEmptyString = equal(foo, "")
  }
}
$ bake --print
{
  "target": {
    "default": {
      "context": ".",
      "dockerfile": "Dockerfile",
      "args": {
        "isEmptyString": "false",
        "isNull": "true"
      }
    }
  }
}

Actual behaviour

variable "foo" {}

target "default" {
  args = {
    isNull = equal(foo, null)
    isEmptyString = equal(foo, "")
  }
}
$ bake --print
{
  "target": {
    "default": {
      "context": ".",
      "dockerfile": "Dockerfile",
      "args": {
        "isEmptyString": "true",
        "isNull": "false"
      }
    }
  }
}

Buildx version

github.com/docker/buildx 3b25e3f 3b25e3fa5c0aaad475a7516cfe852262db26b068

Docker info

No response

Builders list

[david:~/src/s/playground] $ buildx ls
NAME/NODE              DRIVER/ENDPOINT     STATUS    BUILDKIT   PLATFORMS
container*             docker-container                         
 \_ container0          \_ desktop-linux   running   064e35a    linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
default                docker                                   
 \_ default             \_ default         running   v0.13.2    linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
desktop-linux          docker                                   
 \_ desktop-linux       \_ desktop-linux   running   v0.13.2    linux/arm64, linux/amd64, linux/amd64/v2, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/mips64, linux/arm/v7, linux/arm/v6
cloud-docker-default   cloud               error                

Cannot load builder cloud-docker-default: failed to find driver "cloud"

Configuration

variable "foo" {}

target "default" {
  args = {
    isNull = equal(foo, null)
    isEmptyString = equal(foo, "")
  }
}

Build logs

No response

Additional info

No response