-
Notifications
You must be signed in to change notification settings - Fork 515
add go test std
to image tests
#552
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
We'll also need to be careful/mindful of Alpine; see golang/go#19938 |
$ time docker run -it --rm --dns 8.8.8.8 --init golang:1.24 go test std
...
real 7m27.549s
user 0m0.019s
sys 0m0.019s
$ nproc
16 So it'll probably take a lot longer on GHA servers, but that's just a good reason for it to be an image test, not something during build. 👍 |
Oh snap, |
Oh, we should include
|
For some reason, $ nproc # yes, I switched to an even beefier machine because Go is really good at maxing it out and thus being a lot faster 🙈
32
$ time docker run -it --rm golang:1.24 sh -c 'GOROOT="$(go env GOROOT)" && export GOROOT && exec "$@"' -- go run cmd/dist test
##### Test execution environment.
# GOARCH: amd64
# CPU: Intel(R) Core(TM) i9-14900K
# GOOS: linux
# OS Version: Linux 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64
##### Testing packages.
ok archive/tar 0.076s
...
ALL TESTS PASSED
real 1m45.872s
user 0m0.013s
sys 0m0.021s
$ time docker run -it --rm --init --dns 8.8.8.8 --cap-add NET_ADMIN golang:1.24-alpine sh -c 'apk add --no-cache gcc libc-dev iproute2-minimal && exec "$@"' -- sh -c 'GOROOT="$(go env GOROOT)" && export GOROOT && exec "$@"' -- go run cmd/dist test
fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.21/community/x86_64/APKINDEX.tar.gz
(1/18) Upgrading musl (1.2.5-r8 -> 1.2.5-r9)
(2/18) Installing libgcc (14.2.0-r4)
(3/18) Installing jansson (2.14-r4)
(4/18) Installing libstdc++ (14.2.0-r4)
(5/18) Installing zstd-libs (1.5.6-r2)
(6/18) Installing binutils (2.43.1-r1)
(7/18) Installing libgomp (14.2.0-r4)
(8/18) Installing libatomic (14.2.0-r4)
(9/18) Installing gmp (6.3.0-r2)
(10/18) Installing isl26 (0.26-r1)
(11/18) Installing mpfr4 (4.2.1-r0)
(12/18) Installing mpc1 (1.3.1-r1)
(13/18) Installing gcc (14.2.0-r4)
(14/18) Installing libcap2 (2.71-r0)
(15/18) Installing libelf (0.191-r0)
(16/18) Installing libmnl (1.0.5-r2)
(17/18) Installing iproute2-minimal (6.11.0-r0)
(18/18) Installing musl-dev (1.2.5-r9)
Executing busybox-1.37.0-r9.trigger
OK: 172 MiB in 33 packages
##### Test execution environment.
# GOARCH: amd64
# CPU: Intel(R) Core(TM) i9-14900K
# GOOS: linux
# OS Version: Linux 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64
##### Testing packages.
ok archive/tar 0.048s
...
ALL TESTS PASSED
real 1m47.948s
user 0m0.009s
sys 0m0.009s |
Somewhat ironically, my tests of our Windows images show that our Nano Server images are closer to passing than Server Core, probably because they skip Git-related tests due to a lack of Git in the image, where Server Core tries to run those tests and fails for reasons that are likely related to our usage of "MinGit" instead of "full" Git (but Nano Server also fails in several places because it tries to shell out to |
With a bunch of finagling, I got Windows Server Core down to just complaining about |
It's a hack, but just to document it for the future, this gets really close with Server Core (Nano is going to be harder because of the FROM golang:1.24
RUN Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
RUN rm -r /git
RUN choco install --yes git
RUN git --version
RUN tzutil /s UTC
#RUN choco install --yes mingw
#RUN gcc --version To be clear, I wouldn't do it anything like this ( |
It's probably a bit much to add directly in the image build (and might have side effects, like writing logs or temporary files that we don't want), but it would be very reasonable and very prudent for us to add a test of all our images that explicitly runs
go test std
to run all the standard library tests (especially for images like #464 / #531 👀).The text was updated successfully, but these errors were encountered: