diff --git a/Dockerfile b/Dockerfile index 54010c96e3c0..4743e87233a5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ ARG GO_VERSION=1.20.8 ARG XX_VERSION=1.2.1 -ARG DOCKER_VERSION=24.0.2 +ARG DOCKER_VERSION=24.0.6 ARG GOTESTSUM_VERSION=v1.9.0 ARG REGISTRY_VERSION=2.8.0 ARG BUILDKIT_VERSION=v0.11.6 diff --git a/tests/build.go b/tests/build.go index 0ad3cacd0b9a..8d8a8ac62484 100644 --- a/tests/build.go +++ b/tests/build.go @@ -47,6 +47,7 @@ var buildTests = []func(t *testing.T, sb integration.Sandbox){ testBuildCacheExportNotSupported, testBuildOCIExportNotSupported, testBuildMultiPlatformNotSupported, + testDockerHostGateway, } func testBuild(t *testing.T, sb integration.Sandbox) { @@ -415,3 +416,19 @@ func testBuildMultiPlatformNotSupported(t *testing.T, sb integration.Sandbox) { require.Error(t, err, string(out)) require.Contains(t, string(out), "Multi-platform build is not supported") } + +func testDockerHostGateway(t *testing.T, sb integration.Sandbox) { + dockerfile := []byte(` +FROM busybox +RUN nslookup buildx.host-gateway-ip.local +`) + dir := tmpdir(t, fstest.CreateFile("Dockerfile", dockerfile, 0600)) + cmd := buildxCmd(sb, withArgs("build", "--add-host=buildx.host-gateway-ip.local:host-gateway", "--output=type=cacheonly", dir)) + out, err := cmd.CombinedOutput() + if !isDockerWorker(sb) { + require.Error(t, err, string(out)) + require.Contains(t, string(out), "host-gateway is not supported") + } else { + require.NoError(t, err, string(out)) + } +} diff --git a/tests/inspect.go b/tests/inspect.go index 9bfb5e4d0724..c7c4df096be7 100644 --- a/tests/inspect.go +++ b/tests/inspect.go @@ -25,6 +25,7 @@ func testInspect(t *testing.T, sb integration.Sandbox) { var name string var driver string + var hostGatewayIP string for _, line := range strings.Split(out, "\n") { if v, ok := strings.CutPrefix(line, "Name:"); ok && name == "" { name = strings.TrimSpace(v) @@ -32,9 +33,17 @@ func testInspect(t *testing.T, sb integration.Sandbox) { if v, ok := strings.CutPrefix(line, "Driver:"); ok && driver == "" { driver = strings.TrimSpace(v) } + if v, ok := strings.CutPrefix(line, " org.mobyproject.buildkit.worker.moby.host-gateway-ip:"); ok { + hostGatewayIP = strings.TrimSpace(v) + } } require.Equal(t, sb.Address(), name) sbDriver, _, _ := strings.Cut(sb.Name(), "+") require.Equal(t, sbDriver, driver) + if isDockerWorker(sb) { + require.NotEmpty(t, hostGatewayIP, "host-gateway-ip worker label should be set with docker driver") + } else { + require.Empty(t, hostGatewayIP, "host-gateway-ip worker label should not be set with non-docker driver") + } }