This is a minimal reproduction of a bug I have found when using the fake ClientSet from k8s.io/client-go@v0.18.2
.
This repo contains a single test, it uses the fake.NewSimpleClientset
to test an informer.
In my local environment with Go 1.15, this test passes
$ go version
go version go1.15.6 linux/amd64
$ make test
go test -v -count=1 ./...
=== RUN Test_kubernetestFakeFailure
--- PASS: Test_kubernetestFakeFailure (0.00s)
PASS
ok github.com/LucasRoesler/buildx-bug 0.009s
But this test fails when run inside a docker build using buildx to produce a multiach build for amd/intel + arm.
$ docker version
Client: Docker Engine - Community
Version: 20.10.2
API version: 1.41
Go version: go1.13.15
Git commit: 2291f61
Built: Mon Dec 28 16:17:43 2020
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.2
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: 8891c58
Built: Mon Dec 28 16:15:19 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.3
GitCommit: 269548fa27e0089a8b8278fc4fc781d7f65a939b
runc:
Version: 1.0.0-rc92
GitCommit: ff819c7e9184c13b7c2607fe6c30ae19403a7aff
docker-init:
Version: 0.19.0
GitCommit: de40ad0
$ docker buildx version
github.com/docker/buildx v0.5.1-docker 11057da37336192bfc57d81e02359ba7ba848e4a
$ make buildx
multiarch
[+] Building 67.6s (17/22)
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 447B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [linux/arm64 internal] load metadata for docker.io/library/alpine:3.12 0.7s
=> [linux/amd64 internal] load metadata for docker.io/library/golang:1.15 0.6s
=> [linux/amd64 internal] load metadata for docker.io/library/alpine:3.12 0.6s
=> [linux/arm/v7 internal] load metadata for docker.io/library/alpine:3.12 1.6s
=> CACHED [linux/arm/v7 ship 1/2] FROM docker.io/library/alpine:3.12@sha256:3c7497bf0c7af93428242d6176e8f7905f 0.0s
=> => resolve docker.io/library/alpine:3.12@sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f 0.0s
=> [internal] load build context 0.1s
=> => transferring context: 187.07kB 0.1s
=> CACHED [linux/amd64 build 1/5] FROM docker.io/library/golang:1.15@sha256:de97bab9325c4c3904f8f7fec8eb469169 0.0s
=> => resolve docker.io/library/golang:1.15@sha256:de97bab9325c4c3904f8f7fec8eb469169a1d247bdc97dcab38c2c75cf4 0.0s
=> CACHED [linux/arm64 ship 1/2] FROM docker.io/library/alpine:3.12@sha256:3c7497bf0c7af93428242d6176e8f7905f2 0.0s
=> => resolve docker.io/library/alpine:3.12@sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f 0.0s
=> CACHED [linux/amd64 ship 1/2] FROM docker.io/library/alpine:3.12@sha256:3c7497bf0c7af93428242d6176e8f7905f2 0.0s
=> => resolve docker.io/library/alpine:3.12@sha256:3c7497bf0c7af93428242d6176e8f7905f2201d8fc5861f45be7a346b5f 0.0s
=> [linux/amd64 build 2/5] WORKDIR /app 0.0s
=> [linux/amd64 build 3/5] COPY . . 0.1s
=> ERROR [linux/amd64 build 4/5] RUN go test -v ./... 65.0s
=> CANCELED [linux/amd64 build 4/5] RUN go test -v ./... 65.0s
=> [linux/amd64 build 4/5] RUN go test -v ./... 57.2s
=> CANCELED [linux/amd64 build 5/5] RUN go build -a -installsuffix cgo -o hello . 7.8s
------
> [linux/amd64 build 4/5] RUN go test -v ./...:
#16 64.69 === RUN Test_kubernetestFakeFailure
#16 64.72 main_test.go:104: expected 2 functions, got 0
#16 64.74 --- FAIL: Test_kubernetestFakeFailure (0.05s)
#16 64.75 FAIL
#16 64.75 FAIL github.com/LucasRoesler/buildx-bug 0.489s
#16 64.76 FAIL
------
Dockerfile:15
--------------------
13 |
14 | COPY . .
15 | >>> RUN go test -v ./...
16 | RUN go build -a -installsuffix cgo -o hello .
17 |
--------------------
error: failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c go test -v ./...]: exit code: 1
make: *** [Makefile:13: buildx] Error 1
This was noticed while trying to add a new test to github.com/openfaas/faas-netes
: https://github.com/openfaas/faas-netes/pull/739/checks?check_run_id=1673889281