diff --git a/1.22/alpine3.21/Dockerfile b/1.22/alpine3.21/Dockerfile deleted file mode 100644 index 48d745cd..00000000 --- a/1.22/alpine3.21/Dockerfile +++ /dev/null @@ -1,128 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM alpine:3.21 AS build - -ENV PATH /usr/local/go/bin:$PATH - -ENV GOLANG_VERSION 1.22.12 - -RUN set -eux; \ - now="$(date '+%s')"; \ - apk add --no-cache --virtual .fetch-deps \ - ca-certificates \ - gnupg \ -# busybox's "tar" doesn't handle directory mtime correctly, so our SOURCE_DATE_EPOCH lookup doesn't work (the mtime of "/usr/local/go" always ends up being the extraction timestamp) - tar \ - ; \ - arch="$(apk --print-arch)"; \ - url=; \ - case "$arch" in \ - 'x86_64') \ - url='https://dl.google.com/go/go1.22.12.linux-amd64.tar.gz'; \ - sha256='4fa4f869b0f7fc6bb1eb2660e74657fbf04cdd290b5aef905585c86051b34d43'; \ - ;; \ - 'armhf') \ - url='https://dl.google.com/go/go1.22.12.linux-armv6l.tar.gz'; \ - sha256='bcd678461bb74cda217fb5aa3cc914b2021be6d828f0c6fb4e3a36c3d7312acb'; \ - ;; \ - 'armv7') \ - url='https://dl.google.com/go/go1.22.12.linux-armv6l.tar.gz'; \ - sha256='bcd678461bb74cda217fb5aa3cc914b2021be6d828f0c6fb4e3a36c3d7312acb'; \ - ;; \ - 'aarch64') \ - url='https://dl.google.com/go/go1.22.12.linux-arm64.tar.gz'; \ - sha256='fd017e647ec28525e86ae8203236e0653242722a7436929b1f775744e26278e7'; \ - ;; \ - 'x86') \ - url='https://dl.google.com/go/go1.22.12.linux-386.tar.gz'; \ - sha256='40d4c297bc2e964e9c96fe79bb323dce79b77b8b103fc7cc52e0a87c7849890f'; \ - ;; \ - 'ppc64le') \ - url='https://dl.google.com/go/go1.22.12.linux-ppc64le.tar.gz'; \ - sha256='9573d30003b0796717a99d9e2e96c48fddd4fc0f29d840f212c503b03d7de112'; \ - ;; \ - 'riscv64') \ - url='https://dl.google.com/go/go1.22.12.linux-riscv64.tar.gz'; \ - sha256='f03a084aabc812fdc15b29acd5e1ee18e13b3c80be22aec43990119afcaf4947'; \ - ;; \ - 's390x') \ - url='https://dl.google.com/go/go1.22.12.linux-s390x.tar.gz'; \ - sha256='e1b20935cc790fdc4c48c0e3e6dd11be57ac09e4eb302ba2cdf146276468b346'; \ - ;; \ - *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ - esac; \ - \ - wget -O go.tgz.asc "$url.asc"; \ - wget -O go.tgz "$url"; \ - echo "$sha256 *go.tgz" | sha256sum -c -; \ - \ -# https://github.com/golang/go/issues/14739#issuecomment-324767697 - GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ -# https://www.google.com/linuxrepositories/ - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796'; \ -# let's also fetch the specific subkey of that key explicitly that we expect "go.tgz.asc" to be signed by, just to make sure we definitely have it - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys '2F52 8D36 D67B 69ED F998 D857 78BD 6547 3CB3 BD13'; \ - gpg --batch --verify go.tgz.asc go.tgz; \ - gpgconf --kill all; \ - rm -rf "$GNUPGHOME" go.tgz.asc; \ - \ - tar -C /usr/local -xzf go.tgz; \ - rm go.tgz; \ - \ -# save the timestamp from the tarball so we can restore it for reproducibility, if necessary (see below) - SOURCE_DATE_EPOCH="$(stat -c '%Y' /usr/local/go)"; \ - export SOURCE_DATE_EPOCH; \ - touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ -# for logging validation/edification - date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ -# sanity check (detected value should be older than our wall clock) - [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ - \ - if [ "$arch" = 'armv7' ]; then \ - [ -s /usr/local/go/go.env ]; \ - before="$(go env GOARM)"; [ "$before" != '7' ]; \ - { \ - echo; \ - echo '# https://github.com/docker-library/golang/issues/494'; \ - echo 'GOARM=7'; \ - } >> /usr/local/go/go.env; \ - after="$(go env GOARM)"; [ "$after" = '7' ]; \ -# (re-)clamp timestamp for reproducibility (allows "COPY --link" to be more clever/useful) - touch -t "$touchy" /usr/local/go/go.env /usr/local/go; \ - fi; \ - \ -# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want - mkdir /target /target/usr /target/usr/local; \ - mv -vT /usr/local/go /target/usr/local/go; \ - ln -svfT /target/usr/local/go /usr/local/go; \ - touch -t "$touchy" /target/usr/local /target/usr /target; \ - \ - apk del --no-network .fetch-deps; \ - \ -# smoke test - go version; \ -# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) - epoch="$(stat -c '%Y' /target/usr/local/go)"; \ - [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ - find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + - -FROM alpine:3.21 - -RUN apk add --no-cache ca-certificates - -ENV GOLANG_VERSION 1.22.12 - -# don't auto-upgrade the gotoolchain -# https://github.com/docker-library/golang/issues/472 -ENV GOTOOLCHAIN=local - -ENV GOPATH /go -ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH -# (see notes above about "COPY --link") -COPY --from=build --link /target/ / -RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" -WORKDIR $GOPATH diff --git a/1.22/bookworm/Dockerfile b/1.22/bookworm/Dockerfile deleted file mode 100644 index 1ae88e70..00000000 --- a/1.22/bookworm/Dockerfile +++ /dev/null @@ -1,130 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM buildpack-deps:bookworm-scm AS build - -ENV PATH /usr/local/go/bin:$PATH - -ENV GOLANG_VERSION 1.22.12 - -RUN set -eux; \ - now="$(date '+%s')"; \ - arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \ - url=; \ - case "$arch" in \ - 'amd64') \ - url='https://dl.google.com/go/go1.22.12.linux-amd64.tar.gz'; \ - sha256='4fa4f869b0f7fc6bb1eb2660e74657fbf04cdd290b5aef905585c86051b34d43'; \ - ;; \ - 'armhf') \ - url='https://dl.google.com/go/go1.22.12.linux-armv6l.tar.gz'; \ - sha256='bcd678461bb74cda217fb5aa3cc914b2021be6d828f0c6fb4e3a36c3d7312acb'; \ - ;; \ - 'arm64') \ - url='https://dl.google.com/go/go1.22.12.linux-arm64.tar.gz'; \ - sha256='fd017e647ec28525e86ae8203236e0653242722a7436929b1f775744e26278e7'; \ - ;; \ - 'i386') \ - url='https://dl.google.com/go/go1.22.12.linux-386.tar.gz'; \ - sha256='40d4c297bc2e964e9c96fe79bb323dce79b77b8b103fc7cc52e0a87c7849890f'; \ - ;; \ - 'mips64el') \ - url='https://dl.google.com/go/go1.22.12.linux-mips64le.tar.gz'; \ - sha256='2d473895f9c1dc8c86d51eb13f8ca49b7eea46010759fd71efed3eecacf5335b'; \ - ;; \ - 'ppc64el') \ - url='https://dl.google.com/go/go1.22.12.linux-ppc64le.tar.gz'; \ - sha256='9573d30003b0796717a99d9e2e96c48fddd4fc0f29d840f212c503b03d7de112'; \ - ;; \ - 'riscv64') \ - url='https://dl.google.com/go/go1.22.12.linux-riscv64.tar.gz'; \ - sha256='f03a084aabc812fdc15b29acd5e1ee18e13b3c80be22aec43990119afcaf4947'; \ - ;; \ - 's390x') \ - url='https://dl.google.com/go/go1.22.12.linux-s390x.tar.gz'; \ - sha256='e1b20935cc790fdc4c48c0e3e6dd11be57ac09e4eb302ba2cdf146276468b346'; \ - ;; \ - *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ - esac; \ - \ - wget -O go.tgz.asc "$url.asc"; \ - wget -O go.tgz "$url" --progress=dot:giga; \ - echo "$sha256 *go.tgz" | sha256sum -c -; \ - \ -# https://github.com/golang/go/issues/14739#issuecomment-324767697 - GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ -# https://www.google.com/linuxrepositories/ - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796'; \ -# let's also fetch the specific subkey of that key explicitly that we expect "go.tgz.asc" to be signed by, just to make sure we definitely have it - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys '2F52 8D36 D67B 69ED F998 D857 78BD 6547 3CB3 BD13'; \ - gpg --batch --verify go.tgz.asc go.tgz; \ - gpgconf --kill all; \ - rm -rf "$GNUPGHOME" go.tgz.asc; \ - \ - tar -C /usr/local -xzf go.tgz; \ - rm go.tgz; \ - \ -# save the timestamp from the tarball so we can restore it for reproducibility, if necessary (see below) - SOURCE_DATE_EPOCH="$(stat -c '%Y' /usr/local/go)"; \ - export SOURCE_DATE_EPOCH; \ - touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ -# for logging validation/edification - date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ -# sanity check (detected value should be older than our wall clock) - [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ - \ - if [ "$arch" = 'armhf' ]; then \ - [ -s /usr/local/go/go.env ]; \ - before="$(go env GOARM)"; [ "$before" != '7' ]; \ - { \ - echo; \ - echo '# https://github.com/docker-library/golang/issues/494'; \ - echo 'GOARM=7'; \ - } >> /usr/local/go/go.env; \ - after="$(go env GOARM)"; [ "$after" = '7' ]; \ -# (re-)clamp timestamp for reproducibility (allows "COPY --link" to be more clever/useful) - touch -t "$touchy" /usr/local/go/go.env /usr/local/go; \ - fi; \ - \ -# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want - mkdir /target /target/usr /target/usr/local; \ - mv -vT /usr/local/go /target/usr/local/go; \ - ln -svfT /target/usr/local/go /usr/local/go; \ - touch -t "$touchy" /target/usr/local /target/usr /target; \ - \ -# smoke test - go version; \ -# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) - epoch="$(stat -c '%Y' /target/usr/local/go)"; \ - [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ - find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + - -FROM buildpack-deps:bookworm-scm - -# install cgo-related dependencies -RUN set -eux; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - g++ \ - gcc \ - libc6-dev \ - make \ - pkg-config \ - ; \ - rm -rf /var/lib/apt/lists/* - -ENV GOLANG_VERSION 1.22.12 - -# don't auto-upgrade the gotoolchain -# https://github.com/docker-library/golang/issues/472 -ENV GOTOOLCHAIN=local - -ENV GOPATH /go -ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH -# (see notes above about "COPY --link") -COPY --from=build --link /target/ / -RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" -WORKDIR $GOPATH diff --git a/1.22/bullseye/Dockerfile b/1.22/bullseye/Dockerfile deleted file mode 100644 index fd987965..00000000 --- a/1.22/bullseye/Dockerfile +++ /dev/null @@ -1,130 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM buildpack-deps:bullseye-scm AS build - -ENV PATH /usr/local/go/bin:$PATH - -ENV GOLANG_VERSION 1.22.12 - -RUN set -eux; \ - now="$(date '+%s')"; \ - arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \ - url=; \ - case "$arch" in \ - 'amd64') \ - url='https://dl.google.com/go/go1.22.12.linux-amd64.tar.gz'; \ - sha256='4fa4f869b0f7fc6bb1eb2660e74657fbf04cdd290b5aef905585c86051b34d43'; \ - ;; \ - 'armhf') \ - url='https://dl.google.com/go/go1.22.12.linux-armv6l.tar.gz'; \ - sha256='bcd678461bb74cda217fb5aa3cc914b2021be6d828f0c6fb4e3a36c3d7312acb'; \ - ;; \ - 'arm64') \ - url='https://dl.google.com/go/go1.22.12.linux-arm64.tar.gz'; \ - sha256='fd017e647ec28525e86ae8203236e0653242722a7436929b1f775744e26278e7'; \ - ;; \ - 'i386') \ - url='https://dl.google.com/go/go1.22.12.linux-386.tar.gz'; \ - sha256='40d4c297bc2e964e9c96fe79bb323dce79b77b8b103fc7cc52e0a87c7849890f'; \ - ;; \ - 'mips64el') \ - url='https://dl.google.com/go/go1.22.12.linux-mips64le.tar.gz'; \ - sha256='2d473895f9c1dc8c86d51eb13f8ca49b7eea46010759fd71efed3eecacf5335b'; \ - ;; \ - 'ppc64el') \ - url='https://dl.google.com/go/go1.22.12.linux-ppc64le.tar.gz'; \ - sha256='9573d30003b0796717a99d9e2e96c48fddd4fc0f29d840f212c503b03d7de112'; \ - ;; \ - 'riscv64') \ - url='https://dl.google.com/go/go1.22.12.linux-riscv64.tar.gz'; \ - sha256='f03a084aabc812fdc15b29acd5e1ee18e13b3c80be22aec43990119afcaf4947'; \ - ;; \ - 's390x') \ - url='https://dl.google.com/go/go1.22.12.linux-s390x.tar.gz'; \ - sha256='e1b20935cc790fdc4c48c0e3e6dd11be57ac09e4eb302ba2cdf146276468b346'; \ - ;; \ - *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ - esac; \ - \ - wget -O go.tgz.asc "$url.asc"; \ - wget -O go.tgz "$url" --progress=dot:giga; \ - echo "$sha256 *go.tgz" | sha256sum -c -; \ - \ -# https://github.com/golang/go/issues/14739#issuecomment-324767697 - GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ -# https://www.google.com/linuxrepositories/ - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796'; \ -# let's also fetch the specific subkey of that key explicitly that we expect "go.tgz.asc" to be signed by, just to make sure we definitely have it - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys '2F52 8D36 D67B 69ED F998 D857 78BD 6547 3CB3 BD13'; \ - gpg --batch --verify go.tgz.asc go.tgz; \ - gpgconf --kill all; \ - rm -rf "$GNUPGHOME" go.tgz.asc; \ - \ - tar -C /usr/local -xzf go.tgz; \ - rm go.tgz; \ - \ -# save the timestamp from the tarball so we can restore it for reproducibility, if necessary (see below) - SOURCE_DATE_EPOCH="$(stat -c '%Y' /usr/local/go)"; \ - export SOURCE_DATE_EPOCH; \ - touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ -# for logging validation/edification - date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ -# sanity check (detected value should be older than our wall clock) - [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ - \ - if [ "$arch" = 'armhf' ]; then \ - [ -s /usr/local/go/go.env ]; \ - before="$(go env GOARM)"; [ "$before" != '7' ]; \ - { \ - echo; \ - echo '# https://github.com/docker-library/golang/issues/494'; \ - echo 'GOARM=7'; \ - } >> /usr/local/go/go.env; \ - after="$(go env GOARM)"; [ "$after" = '7' ]; \ -# (re-)clamp timestamp for reproducibility (allows "COPY --link" to be more clever/useful) - touch -t "$touchy" /usr/local/go/go.env /usr/local/go; \ - fi; \ - \ -# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want - mkdir /target /target/usr /target/usr/local; \ - mv -vT /usr/local/go /target/usr/local/go; \ - ln -svfT /target/usr/local/go /usr/local/go; \ - touch -t "$touchy" /target/usr/local /target/usr /target; \ - \ -# smoke test - go version; \ -# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) - epoch="$(stat -c '%Y' /target/usr/local/go)"; \ - [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ - find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + - -FROM buildpack-deps:bullseye-scm - -# install cgo-related dependencies -RUN set -eux; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - g++ \ - gcc \ - libc6-dev \ - make \ - pkg-config \ - ; \ - rm -rf /var/lib/apt/lists/* - -ENV GOLANG_VERSION 1.22.12 - -# don't auto-upgrade the gotoolchain -# https://github.com/docker-library/golang/issues/472 -ENV GOTOOLCHAIN=local - -ENV GOPATH /go -ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH -# (see notes above about "COPY --link") -COPY --from=build --link /target/ / -RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" -WORKDIR $GOPATH diff --git a/1.22/windows/nanoserver-1809/Dockerfile b/1.22/windows/nanoserver-1809/Dockerfile deleted file mode 100644 index ea747807..00000000 --- a/1.22/windows/nanoserver-1809/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/nanoserver:1809 - -SHELL ["cmd", "/S", "/C"] - -# no Git installed (intentionally) -# -- Nano Server is "Windows Slim" - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -USER ContainerAdministrator -RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" -USER ContainerUser -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.22.12 - -# Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon -COPY --from=golang:1.22.12-windowsservercore-1809 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] -RUN go version - -WORKDIR $GOPATH diff --git a/1.22/windows/nanoserver-ltsc2025/Dockerfile b/1.22/windows/nanoserver-ltsc2025/Dockerfile deleted file mode 100644 index c7effc45..00000000 --- a/1.22/windows/nanoserver-ltsc2025/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/nanoserver:ltsc2025 - -SHELL ["cmd", "/S", "/C"] - -# no Git installed (intentionally) -# -- Nano Server is "Windows Slim" - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -USER ContainerAdministrator -RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" -USER ContainerUser -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.22.12 - -# Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon -COPY --from=golang:1.22.12-windowsservercore-ltsc2025 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] -RUN go version - -WORKDIR $GOPATH diff --git a/1.22/windows/windowsservercore-1809/Dockerfile b/1.22/windows/windowsservercore-1809/Dockerfile deleted file mode 100644 index 44e10784..00000000 --- a/1.22/windows/windowsservercore-1809/Dockerfile +++ /dev/null @@ -1,84 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/servercore:1809 - -# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - -# install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 -ENV GIT_TAG v${GIT_VERSION}.windows.1 -ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 -# steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) -RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $env:GIT_DOWNLOAD_URL -OutFile 'git.zip'; \ - \ - Write-Host ('Verifying sha256 ({0}) ...' -f $env:GIT_DOWNLOAD_SHA256); \ - if ((Get-FileHash git.zip -Algorithm sha256).Hash -ne $env:GIT_DOWNLOAD_SHA256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive -Path git.zip -DestinationPath C:\git\.; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item git.zip -Force; \ - \ - Write-Host 'Updating PATH ...'; \ - $env:PATH = 'C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin;' + $env:PATH; \ - [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); \ - \ - Write-Host 'Verifying install ("git version") ...'; \ - git version; \ - \ - Write-Host 'Complete.'; - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH); \ - Write-Host ('Updating PATH: {0}' -f $newPath); \ - [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.22.12 - -RUN $url = 'https://dl.google.com/go/go1.22.12.windows-amd64.zip'; \ - Write-Host ('Downloading {0} ...' -f $url); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ - \ - $sha256 = '2ceda04074eac51f4b0b85a9fcca38bcd49daee24bed9ea1f29958a8e22673a6'; \ - Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ - if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive go.zip -DestinationPath C:\; \ - \ - Write-Host 'Moving ...'; \ - Move-Item -Path C:\go -Destination 'C:\Program Files\Go'; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item go.zip -Force; \ - \ - Write-Host 'Verifying install ("go version") ...'; \ - go version; \ - \ - Write-Host 'Complete.'; - -WORKDIR $GOPATH diff --git a/1.22/windows/windowsservercore-ltsc2022/Dockerfile b/1.22/windows/windowsservercore-ltsc2022/Dockerfile deleted file mode 100644 index 80ce6f38..00000000 --- a/1.22/windows/windowsservercore-ltsc2022/Dockerfile +++ /dev/null @@ -1,84 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/servercore:ltsc2022 - -# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - -# install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 -ENV GIT_TAG v${GIT_VERSION}.windows.1 -ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 -# steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) -RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $env:GIT_DOWNLOAD_URL -OutFile 'git.zip'; \ - \ - Write-Host ('Verifying sha256 ({0}) ...' -f $env:GIT_DOWNLOAD_SHA256); \ - if ((Get-FileHash git.zip -Algorithm sha256).Hash -ne $env:GIT_DOWNLOAD_SHA256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive -Path git.zip -DestinationPath C:\git\.; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item git.zip -Force; \ - \ - Write-Host 'Updating PATH ...'; \ - $env:PATH = 'C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin;' + $env:PATH; \ - [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); \ - \ - Write-Host 'Verifying install ("git version") ...'; \ - git version; \ - \ - Write-Host 'Complete.'; - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH); \ - Write-Host ('Updating PATH: {0}' -f $newPath); \ - [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.22.12 - -RUN $url = 'https://dl.google.com/go/go1.22.12.windows-amd64.zip'; \ - Write-Host ('Downloading {0} ...' -f $url); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ - \ - $sha256 = '2ceda04074eac51f4b0b85a9fcca38bcd49daee24bed9ea1f29958a8e22673a6'; \ - Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ - if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive go.zip -DestinationPath C:\; \ - \ - Write-Host 'Moving ...'; \ - Move-Item -Path C:\go -Destination 'C:\Program Files\Go'; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item go.zip -Force; \ - \ - Write-Host 'Verifying install ("go version") ...'; \ - go version; \ - \ - Write-Host 'Complete.'; - -WORKDIR $GOPATH diff --git a/1.22/windows/windowsservercore-ltsc2025/Dockerfile b/1.22/windows/windowsservercore-ltsc2025/Dockerfile deleted file mode 100644 index 1a52ad6e..00000000 --- a/1.22/windows/windowsservercore-ltsc2025/Dockerfile +++ /dev/null @@ -1,84 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/servercore:ltsc2025 - -# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - -# install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 -ENV GIT_TAG v${GIT_VERSION}.windows.1 -ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 -# steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) -RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $env:GIT_DOWNLOAD_URL -OutFile 'git.zip'; \ - \ - Write-Host ('Verifying sha256 ({0}) ...' -f $env:GIT_DOWNLOAD_SHA256); \ - if ((Get-FileHash git.zip -Algorithm sha256).Hash -ne $env:GIT_DOWNLOAD_SHA256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive -Path git.zip -DestinationPath C:\git\.; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item git.zip -Force; \ - \ - Write-Host 'Updating PATH ...'; \ - $env:PATH = 'C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin;' + $env:PATH; \ - [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); \ - \ - Write-Host 'Verifying install ("git version") ...'; \ - git version; \ - \ - Write-Host 'Complete.'; - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH); \ - Write-Host ('Updating PATH: {0}' -f $newPath); \ - [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.22.12 - -RUN $url = 'https://dl.google.com/go/go1.22.12.windows-amd64.zip'; \ - Write-Host ('Downloading {0} ...' -f $url); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ - \ - $sha256 = '2ceda04074eac51f4b0b85a9fcca38bcd49daee24bed9ea1f29958a8e22673a6'; \ - Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ - if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive go.zip -DestinationPath C:\; \ - \ - Write-Host 'Moving ...'; \ - Move-Item -Path C:\go -Destination 'C:\Program Files\Go'; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item go.zip -Force; \ - \ - Write-Host 'Verifying install ("go version") ...'; \ - go version; \ - \ - Write-Host 'Complete.'; - -WORKDIR $GOPATH diff --git a/1.23/windows/nanoserver-1809/Dockerfile b/1.23/windows/nanoserver-1809/Dockerfile deleted file mode 100644 index ca746b6e..00000000 --- a/1.23/windows/nanoserver-1809/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/nanoserver:1809 - -SHELL ["cmd", "/S", "/C"] - -# no Git installed (intentionally) -# -- Nano Server is "Windows Slim" - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -USER ContainerAdministrator -RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" -USER ContainerUser -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.23.6 - -# Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon -COPY --from=golang:1.23.6-windowsservercore-1809 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] -RUN go version - -WORKDIR $GOPATH diff --git a/1.23/windows/windowsservercore-1809/Dockerfile b/1.23/windows/windowsservercore-1809/Dockerfile deleted file mode 100644 index c8a8e0cb..00000000 --- a/1.23/windows/windowsservercore-1809/Dockerfile +++ /dev/null @@ -1,84 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/servercore:1809 - -# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - -# install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 -ENV GIT_TAG v${GIT_VERSION}.windows.1 -ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 -# steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) -RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $env:GIT_DOWNLOAD_URL -OutFile 'git.zip'; \ - \ - Write-Host ('Verifying sha256 ({0}) ...' -f $env:GIT_DOWNLOAD_SHA256); \ - if ((Get-FileHash git.zip -Algorithm sha256).Hash -ne $env:GIT_DOWNLOAD_SHA256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive -Path git.zip -DestinationPath C:\git\.; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item git.zip -Force; \ - \ - Write-Host 'Updating PATH ...'; \ - $env:PATH = 'C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin;' + $env:PATH; \ - [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); \ - \ - Write-Host 'Verifying install ("git version") ...'; \ - git version; \ - \ - Write-Host 'Complete.'; - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH); \ - Write-Host ('Updating PATH: {0}' -f $newPath); \ - [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.23.6 - -RUN $url = 'https://dl.google.com/go/go1.23.6.windows-amd64.zip'; \ - Write-Host ('Downloading {0} ...' -f $url); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ - \ - $sha256 = '53fec1586850b2cf5ad6438341ff7adc5f6700dd3ec1cfa3f5e8b141df190243'; \ - Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ - if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive go.zip -DestinationPath C:\; \ - \ - Write-Host 'Moving ...'; \ - Move-Item -Path C:\go -Destination 'C:\Program Files\Go'; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item go.zip -Force; \ - \ - Write-Host 'Verifying install ("go version") ...'; \ - go version; \ - \ - Write-Host 'Complete.'; - -WORKDIR $GOPATH diff --git a/1.24-rc/alpine3.20/Dockerfile b/1.24-rc/alpine3.20/Dockerfile deleted file mode 100644 index f9e30f88..00000000 --- a/1.24-rc/alpine3.20/Dockerfile +++ /dev/null @@ -1,128 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM alpine:3.20 AS build - -ENV PATH /usr/local/go/bin:$PATH - -ENV GOLANG_VERSION 1.24rc3 - -RUN set -eux; \ - now="$(date '+%s')"; \ - apk add --no-cache --virtual .fetch-deps \ - ca-certificates \ - gnupg \ -# busybox's "tar" doesn't handle directory mtime correctly, so our SOURCE_DATE_EPOCH lookup doesn't work (the mtime of "/usr/local/go" always ends up being the extraction timestamp) - tar \ - ; \ - arch="$(apk --print-arch)"; \ - url=; \ - case "$arch" in \ - 'x86_64') \ - url='https://dl.google.com/go/go1.24rc3.linux-amd64.tar.gz'; \ - sha256='9eb3d64e392531781574e65880575c62633436c56f86d88a8dc15bacd546798e'; \ - ;; \ - 'armhf') \ - url='https://dl.google.com/go/go1.24rc3.linux-armv6l.tar.gz'; \ - sha256='1eee0832fbc2aa4bd1a90e4169fc800d80d0ffb208ff4fc2015f8fda4b43a784'; \ - ;; \ - 'armv7') \ - url='https://dl.google.com/go/go1.24rc3.linux-armv6l.tar.gz'; \ - sha256='1eee0832fbc2aa4bd1a90e4169fc800d80d0ffb208ff4fc2015f8fda4b43a784'; \ - ;; \ - 'aarch64') \ - url='https://dl.google.com/go/go1.24rc3.linux-arm64.tar.gz'; \ - sha256='6be6c4e543878ec513b7e9bd390b625ad1c37a2a4b206de230815b2ce87036ef'; \ - ;; \ - 'x86') \ - url='https://dl.google.com/go/go1.24rc3.linux-386.tar.gz'; \ - sha256='fc5813d6ad0964694a91f66702e8646aa09e1f586ed2957edf1da3813ebf04ce'; \ - ;; \ - 'ppc64le') \ - url='https://dl.google.com/go/go1.24rc3.linux-ppc64le.tar.gz'; \ - sha256='302957949a12771975be4e906e890872b98f9139430bb6807c9eb4d93a9759ee'; \ - ;; \ - 'riscv64') \ - url='https://dl.google.com/go/go1.24rc3.linux-riscv64.tar.gz'; \ - sha256='93a9c11fc8a5840bcc0518a839edcecc999e0f77c023e05b6670459ae167c94d'; \ - ;; \ - 's390x') \ - url='https://dl.google.com/go/go1.24rc3.linux-s390x.tar.gz'; \ - sha256='17ae869511a9783c496f42f4e20b4be1e7a254ca3e5e1fe02f374e619261b8d2'; \ - ;; \ - *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ - esac; \ - \ - wget -O go.tgz.asc "$url.asc"; \ - wget -O go.tgz "$url"; \ - echo "$sha256 *go.tgz" | sha256sum -c -; \ - \ -# https://github.com/golang/go/issues/14739#issuecomment-324767697 - GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ -# https://www.google.com/linuxrepositories/ - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 'EB4C 1BFD 4F04 2F6D DDCC EC91 7721 F63B D38B 4796'; \ -# let's also fetch the specific subkey of that key explicitly that we expect "go.tgz.asc" to be signed by, just to make sure we definitely have it - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys '2F52 8D36 D67B 69ED F998 D857 78BD 6547 3CB3 BD13'; \ - gpg --batch --verify go.tgz.asc go.tgz; \ - gpgconf --kill all; \ - rm -rf "$GNUPGHOME" go.tgz.asc; \ - \ - tar -C /usr/local -xzf go.tgz; \ - rm go.tgz; \ - \ -# save the timestamp from the tarball so we can restore it for reproducibility, if necessary (see below) - SOURCE_DATE_EPOCH="$(stat -c '%Y' /usr/local/go)"; \ - export SOURCE_DATE_EPOCH; \ - touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ -# for logging validation/edification - date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ -# sanity check (detected value should be older than our wall clock) - [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ - \ - if [ "$arch" = 'armv7' ]; then \ - [ -s /usr/local/go/go.env ]; \ - before="$(go env GOARM)"; [ "$before" != '7' ]; \ - { \ - echo; \ - echo '# https://github.com/docker-library/golang/issues/494'; \ - echo 'GOARM=7'; \ - } >> /usr/local/go/go.env; \ - after="$(go env GOARM)"; [ "$after" = '7' ]; \ -# (re-)clamp timestamp for reproducibility (allows "COPY --link" to be more clever/useful) - touch -t "$touchy" /usr/local/go/go.env /usr/local/go; \ - fi; \ - \ -# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want - mkdir /target /target/usr /target/usr/local; \ - mv -vT /usr/local/go /target/usr/local/go; \ - ln -svfT /target/usr/local/go /usr/local/go; \ - touch -t "$touchy" /target/usr/local /target/usr /target; \ - \ - apk del --no-network .fetch-deps; \ - \ -# smoke test - go version; \ -# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) - epoch="$(stat -c '%Y' /target/usr/local/go)"; \ - [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ - find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + - -FROM alpine:3.20 - -RUN apk add --no-cache ca-certificates - -ENV GOLANG_VERSION 1.24rc3 - -# don't auto-upgrade the gotoolchain -# https://github.com/docker-library/golang/issues/472 -ENV GOTOOLCHAIN=local - -ENV GOPATH /go -ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH -# (see notes above about "COPY --link") -COPY --from=build --link /target/ / -RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" -WORKDIR $GOPATH diff --git a/1.24-rc/windows/nanoserver-1809/Dockerfile b/1.24-rc/windows/nanoserver-1809/Dockerfile deleted file mode 100644 index 53bbf4de..00000000 --- a/1.24-rc/windows/nanoserver-1809/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/nanoserver:1809 - -SHELL ["cmd", "/S", "/C"] - -# no Git installed (intentionally) -# -- Nano Server is "Windows Slim" - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -USER ContainerAdministrator -RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" -USER ContainerUser -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.24rc3 - -# Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon -COPY --from=golang:1.24rc3-windowsservercore-1809 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] -RUN go version - -WORKDIR $GOPATH diff --git a/1.24-rc/windows/nanoserver-ltsc2022/Dockerfile b/1.24-rc/windows/nanoserver-ltsc2022/Dockerfile deleted file mode 100644 index 44cff8df..00000000 --- a/1.24-rc/windows/nanoserver-ltsc2022/Dockerfile +++ /dev/null @@ -1,30 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/nanoserver:ltsc2022 - -SHELL ["cmd", "/S", "/C"] - -# no Git installed (intentionally) -# -- Nano Server is "Windows Slim" - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -USER ContainerAdministrator -RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" -USER ContainerUser -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.24rc3 - -# Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon -COPY --from=golang:1.24rc3-windowsservercore-ltsc2022 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] -RUN go version - -WORKDIR $GOPATH diff --git a/1.24-rc/windows/windowsservercore-1809/Dockerfile b/1.24-rc/windows/windowsservercore-1809/Dockerfile deleted file mode 100644 index bfbc4fdf..00000000 --- a/1.24-rc/windows/windowsservercore-1809/Dockerfile +++ /dev/null @@ -1,84 +0,0 @@ -# -# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" -# -# PLEASE DO NOT EDIT IT DIRECTLY. -# - -FROM mcr.microsoft.com/windows/servercore:1809 - -# $ProgressPreference: https://github.com/PowerShell/PowerShell/issues/2138#issuecomment-251261324 -SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] - -# install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 -ENV GIT_TAG v${GIT_VERSION}.windows.1 -ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 -# steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) -RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $env:GIT_DOWNLOAD_URL -OutFile 'git.zip'; \ - \ - Write-Host ('Verifying sha256 ({0}) ...' -f $env:GIT_DOWNLOAD_SHA256); \ - if ((Get-FileHash git.zip -Algorithm sha256).Hash -ne $env:GIT_DOWNLOAD_SHA256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive -Path git.zip -DestinationPath C:\git\.; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item git.zip -Force; \ - \ - Write-Host 'Updating PATH ...'; \ - $env:PATH = 'C:\git\cmd;C:\git\mingw64\bin;C:\git\usr\bin;' + $env:PATH; \ - [Environment]::SetEnvironmentVariable('PATH', $env:PATH, [EnvironmentVariableTarget]::Machine); \ - \ - Write-Host 'Verifying install ("git version") ...'; \ - git version; \ - \ - Write-Host 'Complete.'; - -# for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) -ENV GOPATH C:\\go -# HOWEVER, please note that it is the Go upstream intention to remove GOPATH support entirely: https://blog.golang.org/go116-module-changes - -# PATH isn't actually set in the Docker image, so we have to set it from within the container -RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH); \ - Write-Host ('Updating PATH: {0}' -f $newPath); \ - [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); -# doing this first to share cache across versions more aggressively - -ENV GOLANG_VERSION 1.24rc3 - -RUN $url = 'https://dl.google.com/go/go1.24rc3.windows-amd64.zip'; \ - Write-Host ('Downloading {0} ...' -f $url); \ - [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ - Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ - \ - $sha256 = '8d7e7cf9bc8b14104f69ef39f009231081a903375ea951eaef58619df1b2bbd2'; \ - Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ - if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ - Write-Host 'FAILED!'; \ - exit 1; \ - }; \ - \ - Write-Host 'Expanding ...'; \ - Expand-Archive go.zip -DestinationPath C:\; \ - \ - Write-Host 'Moving ...'; \ - Move-Item -Path C:\go -Destination 'C:\Program Files\Go'; \ - \ - Write-Host 'Removing ...'; \ - Remove-Item go.zip -Force; \ - \ - Write-Host 'Verifying install ("go version") ...'; \ - go version; \ - \ - Write-Host 'Complete.'; - -WORKDIR $GOPATH diff --git a/1.24-rc/alpine3.21/Dockerfile b/1.24/alpine3.21/Dockerfile similarity index 76% rename from 1.24-rc/alpine3.21/Dockerfile rename to 1.24/alpine3.21/Dockerfile index 64fe3938..89f6c5d5 100644 --- a/1.24-rc/alpine3.21/Dockerfile +++ b/1.24/alpine3.21/Dockerfile @@ -8,7 +8,7 @@ FROM alpine:3.21 AS build ENV PATH /usr/local/go/bin:$PATH -ENV GOLANG_VERSION 1.24rc3 +ENV GOLANG_VERSION 1.24.10 RUN set -eux; \ now="$(date '+%s')"; \ @@ -22,36 +22,36 @@ RUN set -eux; \ url=; \ case "$arch" in \ 'x86_64') \ - url='https://dl.google.com/go/go1.24rc3.linux-amd64.tar.gz'; \ - sha256='9eb3d64e392531781574e65880575c62633436c56f86d88a8dc15bacd546798e'; \ + url='https://dl.google.com/go/go1.24.10.linux-amd64.tar.gz'; \ + sha256='dd52b974e3d9c5a7bbfb222c685806def6be5d6f7efd10f9caa9ca1fa2f47955'; \ ;; \ 'armhf') \ - url='https://dl.google.com/go/go1.24rc3.linux-armv6l.tar.gz'; \ - sha256='1eee0832fbc2aa4bd1a90e4169fc800d80d0ffb208ff4fc2015f8fda4b43a784'; \ + url='https://dl.google.com/go/go1.24.10.linux-armv6l.tar.gz'; \ + sha256='2e28837ccde684693edced2df01998723c7e9207890d84a6a05c3f511e6b7ccb'; \ ;; \ 'armv7') \ - url='https://dl.google.com/go/go1.24rc3.linux-armv6l.tar.gz'; \ - sha256='1eee0832fbc2aa4bd1a90e4169fc800d80d0ffb208ff4fc2015f8fda4b43a784'; \ + url='https://dl.google.com/go/go1.24.10.linux-armv6l.tar.gz'; \ + sha256='2e28837ccde684693edced2df01998723c7e9207890d84a6a05c3f511e6b7ccb'; \ ;; \ 'aarch64') \ - url='https://dl.google.com/go/go1.24rc3.linux-arm64.tar.gz'; \ - sha256='6be6c4e543878ec513b7e9bd390b625ad1c37a2a4b206de230815b2ce87036ef'; \ + url='https://dl.google.com/go/go1.24.10.linux-arm64.tar.gz'; \ + sha256='94a99dae43dab8a3fe337485bbb89214b524285ec53ea02040514b0c2a9c3f94'; \ ;; \ 'x86') \ - url='https://dl.google.com/go/go1.24rc3.linux-386.tar.gz'; \ - sha256='fc5813d6ad0964694a91f66702e8646aa09e1f586ed2957edf1da3813ebf04ce'; \ + url='https://dl.google.com/go/go1.24.10.linux-386.tar.gz'; \ + sha256='e43078e9ef6a63d7378839030f92d655644ab22337e3afa75bbb094375a7ae8f'; \ ;; \ 'ppc64le') \ - url='https://dl.google.com/go/go1.24rc3.linux-ppc64le.tar.gz'; \ - sha256='302957949a12771975be4e906e890872b98f9139430bb6807c9eb4d93a9759ee'; \ + url='https://dl.google.com/go/go1.24.10.linux-ppc64le.tar.gz'; \ + sha256='828343856535642e0b63f83109a2cca7e615e45c1b9a629ae86d85fc28041a6c'; \ ;; \ 'riscv64') \ - url='https://dl.google.com/go/go1.24rc3.linux-riscv64.tar.gz'; \ - sha256='93a9c11fc8a5840bcc0518a839edcecc999e0f77c023e05b6670459ae167c94d'; \ + url='https://dl.google.com/go/go1.24.10.linux-riscv64.tar.gz'; \ + sha256='0172a4aec1f7530df01863f3122273c6b7f7d63c7a7cbcbe3ec931be850bba15'; \ ;; \ 's390x') \ - url='https://dl.google.com/go/go1.24rc3.linux-s390x.tar.gz'; \ - sha256='17ae869511a9783c496f42f4e20b4be1e7a254ca3e5e1fe02f374e619261b8d2'; \ + url='https://dl.google.com/go/go1.24.10.linux-s390x.tar.gz'; \ + sha256='54efd5c71c6b3161d927ec5ef1fb5a089fb1c43cff15c244d5759eb4c1814597'; \ ;; \ *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ esac; \ @@ -114,7 +114,7 @@ FROM alpine:3.21 RUN apk add --no-cache ca-certificates -ENV GOLANG_VERSION 1.24rc3 +ENV GOLANG_VERSION 1.24.10 # don't auto-upgrade the gotoolchain # https://github.com/docker-library/golang/issues/472 diff --git a/1.22/alpine3.20/Dockerfile b/1.24/alpine3.22/Dockerfile similarity index 75% rename from 1.22/alpine3.20/Dockerfile rename to 1.24/alpine3.22/Dockerfile index 6b5efcc5..487262a8 100644 --- a/1.22/alpine3.20/Dockerfile +++ b/1.24/alpine3.22/Dockerfile @@ -4,11 +4,11 @@ # PLEASE DO NOT EDIT IT DIRECTLY. # -FROM alpine:3.20 AS build +FROM alpine:3.22 AS build ENV PATH /usr/local/go/bin:$PATH -ENV GOLANG_VERSION 1.22.12 +ENV GOLANG_VERSION 1.24.10 RUN set -eux; \ now="$(date '+%s')"; \ @@ -22,36 +22,36 @@ RUN set -eux; \ url=; \ case "$arch" in \ 'x86_64') \ - url='https://dl.google.com/go/go1.22.12.linux-amd64.tar.gz'; \ - sha256='4fa4f869b0f7fc6bb1eb2660e74657fbf04cdd290b5aef905585c86051b34d43'; \ + url='https://dl.google.com/go/go1.24.10.linux-amd64.tar.gz'; \ + sha256='dd52b974e3d9c5a7bbfb222c685806def6be5d6f7efd10f9caa9ca1fa2f47955'; \ ;; \ 'armhf') \ - url='https://dl.google.com/go/go1.22.12.linux-armv6l.tar.gz'; \ - sha256='bcd678461bb74cda217fb5aa3cc914b2021be6d828f0c6fb4e3a36c3d7312acb'; \ + url='https://dl.google.com/go/go1.24.10.linux-armv6l.tar.gz'; \ + sha256='2e28837ccde684693edced2df01998723c7e9207890d84a6a05c3f511e6b7ccb'; \ ;; \ 'armv7') \ - url='https://dl.google.com/go/go1.22.12.linux-armv6l.tar.gz'; \ - sha256='bcd678461bb74cda217fb5aa3cc914b2021be6d828f0c6fb4e3a36c3d7312acb'; \ + url='https://dl.google.com/go/go1.24.10.linux-armv6l.tar.gz'; \ + sha256='2e28837ccde684693edced2df01998723c7e9207890d84a6a05c3f511e6b7ccb'; \ ;; \ 'aarch64') \ - url='https://dl.google.com/go/go1.22.12.linux-arm64.tar.gz'; \ - sha256='fd017e647ec28525e86ae8203236e0653242722a7436929b1f775744e26278e7'; \ + url='https://dl.google.com/go/go1.24.10.linux-arm64.tar.gz'; \ + sha256='94a99dae43dab8a3fe337485bbb89214b524285ec53ea02040514b0c2a9c3f94'; \ ;; \ 'x86') \ - url='https://dl.google.com/go/go1.22.12.linux-386.tar.gz'; \ - sha256='40d4c297bc2e964e9c96fe79bb323dce79b77b8b103fc7cc52e0a87c7849890f'; \ + url='https://dl.google.com/go/go1.24.10.linux-386.tar.gz'; \ + sha256='e43078e9ef6a63d7378839030f92d655644ab22337e3afa75bbb094375a7ae8f'; \ ;; \ 'ppc64le') \ - url='https://dl.google.com/go/go1.22.12.linux-ppc64le.tar.gz'; \ - sha256='9573d30003b0796717a99d9e2e96c48fddd4fc0f29d840f212c503b03d7de112'; \ + url='https://dl.google.com/go/go1.24.10.linux-ppc64le.tar.gz'; \ + sha256='828343856535642e0b63f83109a2cca7e615e45c1b9a629ae86d85fc28041a6c'; \ ;; \ 'riscv64') \ - url='https://dl.google.com/go/go1.22.12.linux-riscv64.tar.gz'; \ - sha256='f03a084aabc812fdc15b29acd5e1ee18e13b3c80be22aec43990119afcaf4947'; \ + url='https://dl.google.com/go/go1.24.10.linux-riscv64.tar.gz'; \ + sha256='0172a4aec1f7530df01863f3122273c6b7f7d63c7a7cbcbe3ec931be850bba15'; \ ;; \ 's390x') \ - url='https://dl.google.com/go/go1.22.12.linux-s390x.tar.gz'; \ - sha256='e1b20935cc790fdc4c48c0e3e6dd11be57ac09e4eb302ba2cdf146276468b346'; \ + url='https://dl.google.com/go/go1.24.10.linux-s390x.tar.gz'; \ + sha256='54efd5c71c6b3161d927ec5ef1fb5a089fb1c43cff15c244d5759eb4c1814597'; \ ;; \ *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ esac; \ @@ -110,11 +110,11 @@ RUN set -eux; \ [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + -FROM alpine:3.20 +FROM alpine:3.22 RUN apk add --no-cache ca-certificates -ENV GOLANG_VERSION 1.22.12 +ENV GOLANG_VERSION 1.24.10 # don't auto-upgrade the gotoolchain # https://github.com/docker-library/golang/issues/472 diff --git a/1.24-rc/bookworm/Dockerfile b/1.24/bookworm/Dockerfile similarity index 67% rename from 1.24-rc/bookworm/Dockerfile rename to 1.24/bookworm/Dockerfile index 228f29cc..23ed8b9b 100644 --- a/1.24-rc/bookworm/Dockerfile +++ b/1.24/bookworm/Dockerfile @@ -8,7 +8,7 @@ FROM buildpack-deps:bookworm-scm AS build ENV PATH /usr/local/go/bin:$PATH -ENV GOLANG_VERSION 1.24rc3 +ENV GOLANG_VERSION 1.24.10 RUN set -eux; \ now="$(date '+%s')"; \ @@ -16,36 +16,36 @@ RUN set -eux; \ url=; \ case "$arch" in \ 'amd64') \ - url='https://dl.google.com/go/go1.24rc3.linux-amd64.tar.gz'; \ - sha256='9eb3d64e392531781574e65880575c62633436c56f86d88a8dc15bacd546798e'; \ + url='https://dl.google.com/go/go1.24.10.linux-amd64.tar.gz'; \ + sha256='dd52b974e3d9c5a7bbfb222c685806def6be5d6f7efd10f9caa9ca1fa2f47955'; \ ;; \ 'armhf') \ - url='https://dl.google.com/go/go1.24rc3.linux-armv6l.tar.gz'; \ - sha256='1eee0832fbc2aa4bd1a90e4169fc800d80d0ffb208ff4fc2015f8fda4b43a784'; \ + url='https://dl.google.com/go/go1.24.10.linux-armv6l.tar.gz'; \ + sha256='2e28837ccde684693edced2df01998723c7e9207890d84a6a05c3f511e6b7ccb'; \ ;; \ 'arm64') \ - url='https://dl.google.com/go/go1.24rc3.linux-arm64.tar.gz'; \ - sha256='6be6c4e543878ec513b7e9bd390b625ad1c37a2a4b206de230815b2ce87036ef'; \ + url='https://dl.google.com/go/go1.24.10.linux-arm64.tar.gz'; \ + sha256='94a99dae43dab8a3fe337485bbb89214b524285ec53ea02040514b0c2a9c3f94'; \ ;; \ 'i386') \ - url='https://dl.google.com/go/go1.24rc3.linux-386.tar.gz'; \ - sha256='fc5813d6ad0964694a91f66702e8646aa09e1f586ed2957edf1da3813ebf04ce'; \ + url='https://dl.google.com/go/go1.24.10.linux-386.tar.gz'; \ + sha256='e43078e9ef6a63d7378839030f92d655644ab22337e3afa75bbb094375a7ae8f'; \ ;; \ 'mips64el') \ - url='https://dl.google.com/go/go1.24rc3.linux-mips64le.tar.gz'; \ - sha256='1f4c73ebe63917debe6ab12e126fb5e6587b07c013d3c31ab79acc43dedba7f9'; \ + url='https://dl.google.com/go/go1.24.10.linux-mips64le.tar.gz'; \ + sha256='99c24fb4a175eab370a964d6240a9e4db00e3977fd85bef54080a175f501074c'; \ ;; \ 'ppc64el') \ - url='https://dl.google.com/go/go1.24rc3.linux-ppc64le.tar.gz'; \ - sha256='302957949a12771975be4e906e890872b98f9139430bb6807c9eb4d93a9759ee'; \ + url='https://dl.google.com/go/go1.24.10.linux-ppc64le.tar.gz'; \ + sha256='828343856535642e0b63f83109a2cca7e615e45c1b9a629ae86d85fc28041a6c'; \ ;; \ 'riscv64') \ - url='https://dl.google.com/go/go1.24rc3.linux-riscv64.tar.gz'; \ - sha256='93a9c11fc8a5840bcc0518a839edcecc999e0f77c023e05b6670459ae167c94d'; \ + url='https://dl.google.com/go/go1.24.10.linux-riscv64.tar.gz'; \ + sha256='0172a4aec1f7530df01863f3122273c6b7f7d63c7a7cbcbe3ec931be850bba15'; \ ;; \ 's390x') \ - url='https://dl.google.com/go/go1.24rc3.linux-s390x.tar.gz'; \ - sha256='17ae869511a9783c496f42f4e20b4be1e7a254ca3e5e1fe02f374e619261b8d2'; \ + url='https://dl.google.com/go/go1.24.10.linux-s390x.tar.gz'; \ + sha256='54efd5c71c6b3161d927ec5ef1fb5a089fb1c43cff15c244d5759eb4c1814597'; \ ;; \ *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ esac; \ @@ -114,9 +114,19 @@ RUN set -eux; \ make \ pkg-config \ ; \ +# go depends on "gold" explicitly on arm64 +# https://github.com/docker-library/golang/issues/570 (go depends on "gold" explicitly on arm64) +# https://github.com/golang/go/issues/22040 +# ... and as of trixie, "gold" is removed from the "binutils" package: +# > WARNING: gold is being removed from binutils, and is deprecated upstream. +# (and available as "binutils-gold" which is also a virtual on bookworm so we can reasonably be explicit everywhere) + dpkgArch="$(dpkg --print-architecture)"; \ + if [ "$dpkgArch" = 'arm64' ]; then \ + apt-get install -y --no-install-recommends binutils-gold; \ + fi; \ rm -rf /var/lib/apt/lists/* -ENV GOLANG_VERSION 1.24rc3 +ENV GOLANG_VERSION 1.24.10 # don't auto-upgrade the gotoolchain # https://github.com/docker-library/golang/issues/472 diff --git a/1.24-rc/bullseye/Dockerfile b/1.24/trixie/Dockerfile similarity index 66% rename from 1.24-rc/bullseye/Dockerfile rename to 1.24/trixie/Dockerfile index d267f71a..744146e6 100644 --- a/1.24-rc/bullseye/Dockerfile +++ b/1.24/trixie/Dockerfile @@ -4,11 +4,11 @@ # PLEASE DO NOT EDIT IT DIRECTLY. # -FROM buildpack-deps:bullseye-scm AS build +FROM buildpack-deps:trixie-scm AS build ENV PATH /usr/local/go/bin:$PATH -ENV GOLANG_VERSION 1.24rc3 +ENV GOLANG_VERSION 1.24.10 RUN set -eux; \ now="$(date '+%s')"; \ @@ -16,36 +16,36 @@ RUN set -eux; \ url=; \ case "$arch" in \ 'amd64') \ - url='https://dl.google.com/go/go1.24rc3.linux-amd64.tar.gz'; \ - sha256='9eb3d64e392531781574e65880575c62633436c56f86d88a8dc15bacd546798e'; \ + url='https://dl.google.com/go/go1.24.10.linux-amd64.tar.gz'; \ + sha256='dd52b974e3d9c5a7bbfb222c685806def6be5d6f7efd10f9caa9ca1fa2f47955'; \ ;; \ 'armhf') \ - url='https://dl.google.com/go/go1.24rc3.linux-armv6l.tar.gz'; \ - sha256='1eee0832fbc2aa4bd1a90e4169fc800d80d0ffb208ff4fc2015f8fda4b43a784'; \ + url='https://dl.google.com/go/go1.24.10.linux-armv6l.tar.gz'; \ + sha256='2e28837ccde684693edced2df01998723c7e9207890d84a6a05c3f511e6b7ccb'; \ ;; \ 'arm64') \ - url='https://dl.google.com/go/go1.24rc3.linux-arm64.tar.gz'; \ - sha256='6be6c4e543878ec513b7e9bd390b625ad1c37a2a4b206de230815b2ce87036ef'; \ + url='https://dl.google.com/go/go1.24.10.linux-arm64.tar.gz'; \ + sha256='94a99dae43dab8a3fe337485bbb89214b524285ec53ea02040514b0c2a9c3f94'; \ ;; \ 'i386') \ - url='https://dl.google.com/go/go1.24rc3.linux-386.tar.gz'; \ - sha256='fc5813d6ad0964694a91f66702e8646aa09e1f586ed2957edf1da3813ebf04ce'; \ + url='https://dl.google.com/go/go1.24.10.linux-386.tar.gz'; \ + sha256='e43078e9ef6a63d7378839030f92d655644ab22337e3afa75bbb094375a7ae8f'; \ ;; \ 'mips64el') \ - url='https://dl.google.com/go/go1.24rc3.linux-mips64le.tar.gz'; \ - sha256='1f4c73ebe63917debe6ab12e126fb5e6587b07c013d3c31ab79acc43dedba7f9'; \ + url='https://dl.google.com/go/go1.24.10.linux-mips64le.tar.gz'; \ + sha256='99c24fb4a175eab370a964d6240a9e4db00e3977fd85bef54080a175f501074c'; \ ;; \ 'ppc64el') \ - url='https://dl.google.com/go/go1.24rc3.linux-ppc64le.tar.gz'; \ - sha256='302957949a12771975be4e906e890872b98f9139430bb6807c9eb4d93a9759ee'; \ + url='https://dl.google.com/go/go1.24.10.linux-ppc64le.tar.gz'; \ + sha256='828343856535642e0b63f83109a2cca7e615e45c1b9a629ae86d85fc28041a6c'; \ ;; \ 'riscv64') \ - url='https://dl.google.com/go/go1.24rc3.linux-riscv64.tar.gz'; \ - sha256='93a9c11fc8a5840bcc0518a839edcecc999e0f77c023e05b6670459ae167c94d'; \ + url='https://dl.google.com/go/go1.24.10.linux-riscv64.tar.gz'; \ + sha256='0172a4aec1f7530df01863f3122273c6b7f7d63c7a7cbcbe3ec931be850bba15'; \ ;; \ 's390x') \ - url='https://dl.google.com/go/go1.24rc3.linux-s390x.tar.gz'; \ - sha256='17ae869511a9783c496f42f4e20b4be1e7a254ca3e5e1fe02f374e619261b8d2'; \ + url='https://dl.google.com/go/go1.24.10.linux-s390x.tar.gz'; \ + sha256='54efd5c71c6b3161d927ec5ef1fb5a089fb1c43cff15c244d5759eb4c1814597'; \ ;; \ *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ esac; \ @@ -102,7 +102,7 @@ RUN set -eux; \ [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + -FROM buildpack-deps:bullseye-scm +FROM buildpack-deps:trixie-scm # install cgo-related dependencies RUN set -eux; \ @@ -114,9 +114,19 @@ RUN set -eux; \ make \ pkg-config \ ; \ +# go depends on "gold" explicitly on arm64 +# https://github.com/docker-library/golang/issues/570 (go depends on "gold" explicitly on arm64) +# https://github.com/golang/go/issues/22040 +# ... and as of trixie, "gold" is removed from the "binutils" package: +# > WARNING: gold is being removed from binutils, and is deprecated upstream. +# (and available as "binutils-gold" which is also a virtual on bookworm so we can reasonably be explicit everywhere) + dpkgArch="$(dpkg --print-architecture)"; \ + if [ "$dpkgArch" = 'arm64' ]; then \ + apt-get install -y --no-install-recommends binutils-gold; \ + fi; \ rm -rf /var/lib/apt/lists/* -ENV GOLANG_VERSION 1.24rc3 +ENV GOLANG_VERSION 1.24.10 # don't auto-upgrade the gotoolchain # https://github.com/docker-library/golang/issues/472 diff --git a/1.22/windows/nanoserver-ltsc2022/Dockerfile b/1.24/windows/nanoserver-ltsc2022/Dockerfile similarity index 92% rename from 1.22/windows/nanoserver-ltsc2022/Dockerfile rename to 1.24/windows/nanoserver-ltsc2022/Dockerfile index a73178bb..2a9fa594 100644 --- a/1.22/windows/nanoserver-ltsc2022/Dockerfile +++ b/1.24/windows/nanoserver-ltsc2022/Dockerfile @@ -21,10 +21,10 @@ RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" USER ContainerUser # doing this first to share cache across versions more aggressively -ENV GOLANG_VERSION 1.22.12 +ENV GOLANG_VERSION 1.24.10 # Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon -COPY --from=golang:1.22.12-windowsservercore-ltsc2022 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] +COPY --from=golang:1.24.10-windowsservercore-ltsc2022 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] RUN go version WORKDIR $GOPATH diff --git a/1.24-rc/windows/nanoserver-ltsc2025/Dockerfile b/1.24/windows/nanoserver-ltsc2025/Dockerfile similarity index 92% rename from 1.24-rc/windows/nanoserver-ltsc2025/Dockerfile rename to 1.24/windows/nanoserver-ltsc2025/Dockerfile index 95bfdc43..82f353e2 100644 --- a/1.24-rc/windows/nanoserver-ltsc2025/Dockerfile +++ b/1.24/windows/nanoserver-ltsc2025/Dockerfile @@ -21,10 +21,10 @@ RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" USER ContainerUser # doing this first to share cache across versions more aggressively -ENV GOLANG_VERSION 1.24rc3 +ENV GOLANG_VERSION 1.24.10 # Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon -COPY --from=golang:1.24rc3-windowsservercore-ltsc2025 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] +COPY --from=golang:1.24.10-windowsservercore-ltsc2025 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] RUN go version WORKDIR $GOPATH diff --git a/1.24-rc/windows/windowsservercore-ltsc2022/Dockerfile b/1.24/windows/windowsservercore-ltsc2022/Dockerfile similarity index 85% rename from 1.24-rc/windows/windowsservercore-ltsc2022/Dockerfile rename to 1.24/windows/windowsservercore-ltsc2022/Dockerfile index 01797ee6..36aa0b98 100644 --- a/1.24-rc/windows/windowsservercore-ltsc2022/Dockerfile +++ b/1.24/windows/windowsservercore-ltsc2022/Dockerfile @@ -10,13 +10,14 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2022 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 +# https://github.com/git-for-windows/git/wiki/MinGit +# https://gitforwindows.org/ +# https://github.com/git-for-windows/git/releases +# TODO in some future release, consider the BusyBox variant? maybe only once https://github.com/git-for-windows/git/issues/1439 is officially closed? +ENV GIT_VERSION 2.48.1 ENV GIT_TAG v${GIT_VERSION}.windows.1 ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 +ENV GIT_DOWNLOAD_SHA256 11e8f462726827acccc7ecdad541f2544cbe5506d70fef4fa1ffac7c16288709 # steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ @@ -42,6 +43,9 @@ RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ git version; \ \ Write-Host 'Complete.'; +# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ +# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." +# "It currently requires only ~45MB on disk." # for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) ENV GOPATH C:\\go @@ -53,14 +57,14 @@ RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH) [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); # doing this first to share cache across versions more aggressively -ENV GOLANG_VERSION 1.24rc3 +ENV GOLANG_VERSION 1.24.10 -RUN $url = 'https://dl.google.com/go/go1.24rc3.windows-amd64.zip'; \ +RUN $url = 'https://dl.google.com/go/go1.24.10.windows-amd64.zip'; \ Write-Host ('Downloading {0} ...' -f $url); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ \ - $sha256 = '8d7e7cf9bc8b14104f69ef39f009231081a903375ea951eaef58619df1b2bbd2'; \ + $sha256 = '2444fb53637facb37c06faa85d64c38c6cd23d22407f205edb68c7ddb8fbe0d4'; \ Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ Write-Host 'FAILED!'; \ diff --git a/1.24-rc/windows/windowsservercore-ltsc2025/Dockerfile b/1.24/windows/windowsservercore-ltsc2025/Dockerfile similarity index 85% rename from 1.24-rc/windows/windowsservercore-ltsc2025/Dockerfile rename to 1.24/windows/windowsservercore-ltsc2025/Dockerfile index d47c66f2..131030fe 100644 --- a/1.24-rc/windows/windowsservercore-ltsc2025/Dockerfile +++ b/1.24/windows/windowsservercore-ltsc2025/Dockerfile @@ -10,13 +10,14 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2025 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 +# https://github.com/git-for-windows/git/wiki/MinGit +# https://gitforwindows.org/ +# https://github.com/git-for-windows/git/releases +# TODO in some future release, consider the BusyBox variant? maybe only once https://github.com/git-for-windows/git/issues/1439 is officially closed? +ENV GIT_VERSION 2.48.1 ENV GIT_TAG v${GIT_VERSION}.windows.1 ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 +ENV GIT_DOWNLOAD_SHA256 11e8f462726827acccc7ecdad541f2544cbe5506d70fef4fa1ffac7c16288709 # steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ @@ -42,6 +43,9 @@ RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ git version; \ \ Write-Host 'Complete.'; +# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ +# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." +# "It currently requires only ~45MB on disk." # for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) ENV GOPATH C:\\go @@ -53,14 +57,14 @@ RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH) [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); # doing this first to share cache across versions more aggressively -ENV GOLANG_VERSION 1.24rc3 +ENV GOLANG_VERSION 1.24.10 -RUN $url = 'https://dl.google.com/go/go1.24rc3.windows-amd64.zip'; \ +RUN $url = 'https://dl.google.com/go/go1.24.10.windows-amd64.zip'; \ Write-Host ('Downloading {0} ...' -f $url); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ \ - $sha256 = '8d7e7cf9bc8b14104f69ef39f009231081a903375ea951eaef58619df1b2bbd2'; \ + $sha256 = '2444fb53637facb37c06faa85d64c38c6cd23d22407f205edb68c7ddb8fbe0d4'; \ Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ Write-Host 'FAILED!'; \ diff --git a/1.23/alpine3.21/Dockerfile b/1.25/alpine3.21/Dockerfile similarity index 76% rename from 1.23/alpine3.21/Dockerfile rename to 1.25/alpine3.21/Dockerfile index 37bfa8f7..6b0f2b46 100644 --- a/1.23/alpine3.21/Dockerfile +++ b/1.25/alpine3.21/Dockerfile @@ -8,7 +8,7 @@ FROM alpine:3.21 AS build ENV PATH /usr/local/go/bin:$PATH -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 RUN set -eux; \ now="$(date '+%s')"; \ @@ -22,36 +22,36 @@ RUN set -eux; \ url=; \ case "$arch" in \ 'x86_64') \ - url='https://dl.google.com/go/go1.23.6.linux-amd64.tar.gz'; \ - sha256='9379441ea310de000f33a4dc767bd966e72ab2826270e038e78b2c53c2e7802d'; \ + url='https://dl.google.com/go/go1.25.4.linux-amd64.tar.gz'; \ + sha256='9fa5ffeda4170de60f67f3aa0f824e426421ba724c21e133c1e35d6159ca1bec'; \ ;; \ 'armhf') \ - url='https://dl.google.com/go/go1.23.6.linux-armv6l.tar.gz'; \ - sha256='27a4611010c16b8c4f37ade3aada55bd5781998f02f348b164302fd5eea4eb74'; \ + url='https://dl.google.com/go/go1.25.4.linux-armv6l.tar.gz'; \ + sha256='ff86a6406310d840edb170f539a51a7efac0ac2b2f84527b1b2bf5935fc4ab6d'; \ ;; \ 'armv7') \ - url='https://dl.google.com/go/go1.23.6.linux-armv6l.tar.gz'; \ - sha256='27a4611010c16b8c4f37ade3aada55bd5781998f02f348b164302fd5eea4eb74'; \ + url='https://dl.google.com/go/go1.25.4.linux-armv6l.tar.gz'; \ + sha256='ff86a6406310d840edb170f539a51a7efac0ac2b2f84527b1b2bf5935fc4ab6d'; \ ;; \ 'aarch64') \ - url='https://dl.google.com/go/go1.23.6.linux-arm64.tar.gz'; \ - sha256='561c780e8f4a8955d32bf72e46af0b5ee5e0debe1e4633df9a03781878219202'; \ + url='https://dl.google.com/go/go1.25.4.linux-arm64.tar.gz'; \ + sha256='a68e86d4b72c2c2fecf7dfed667680b6c2a071221bbdb6913cf83ce3f80d9ff0'; \ ;; \ 'x86') \ - url='https://dl.google.com/go/go1.23.6.linux-386.tar.gz'; \ - sha256='e61f87693169c0bbcc43363128f1e929b9dff0b7f448573f1bdd4e4a0b9687ba'; \ + url='https://dl.google.com/go/go1.25.4.linux-386.tar.gz'; \ + sha256='0cf5f721ab7c5e7a170dedb2b51d9b1fedfe6ef1b2c626bf7a47fb9a613c5d96'; \ ;; \ 'ppc64le') \ - url='https://dl.google.com/go/go1.23.6.linux-ppc64le.tar.gz'; \ - sha256='0f817201e83d78ddbfa27f5f78d9b72450b92cc21d5e045145efacd0d3244a99'; \ + url='https://dl.google.com/go/go1.25.4.linux-ppc64le.tar.gz'; \ + sha256='38c8ac8463537c99fbc1ef368f243b626144446c09db71b1d20634a4237c966d'; \ ;; \ 'riscv64') \ - url='https://dl.google.com/go/go1.23.6.linux-riscv64.tar.gz'; \ - sha256='f95f7f817ab22ecab4503d0704d6449ea1aa26a595f57bf9b9f94ddf2aa7c1f3'; \ + url='https://dl.google.com/go/go1.25.4.linux-riscv64.tar.gz'; \ + sha256='0a00a0eba831b5fe511e852909b99b83992ea09e81fdfbd9f805e5a4b646f803'; \ ;; \ 's390x') \ - url='https://dl.google.com/go/go1.23.6.linux-s390x.tar.gz'; \ - sha256='321e7ed0d5416f731479c52fa7610b52b8079a8061967bd48cec6d66f671a60e'; \ + url='https://dl.google.com/go/go1.25.4.linux-s390x.tar.gz'; \ + sha256='2482e7b3b924348b120b6d7d7c13035905c009c2a3ecc0c8dc56bf0fd3184a58'; \ ;; \ *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ esac; \ @@ -114,7 +114,7 @@ FROM alpine:3.21 RUN apk add --no-cache ca-certificates -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 # don't auto-upgrade the gotoolchain # https://github.com/docker-library/golang/issues/472 diff --git a/1.23/alpine3.20/Dockerfile b/1.25/alpine3.22/Dockerfile similarity index 75% rename from 1.23/alpine3.20/Dockerfile rename to 1.25/alpine3.22/Dockerfile index 3db988c7..dc63c43e 100644 --- a/1.23/alpine3.20/Dockerfile +++ b/1.25/alpine3.22/Dockerfile @@ -4,11 +4,11 @@ # PLEASE DO NOT EDIT IT DIRECTLY. # -FROM alpine:3.20 AS build +FROM alpine:3.22 AS build ENV PATH /usr/local/go/bin:$PATH -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 RUN set -eux; \ now="$(date '+%s')"; \ @@ -22,36 +22,36 @@ RUN set -eux; \ url=; \ case "$arch" in \ 'x86_64') \ - url='https://dl.google.com/go/go1.23.6.linux-amd64.tar.gz'; \ - sha256='9379441ea310de000f33a4dc767bd966e72ab2826270e038e78b2c53c2e7802d'; \ + url='https://dl.google.com/go/go1.25.4.linux-amd64.tar.gz'; \ + sha256='9fa5ffeda4170de60f67f3aa0f824e426421ba724c21e133c1e35d6159ca1bec'; \ ;; \ 'armhf') \ - url='https://dl.google.com/go/go1.23.6.linux-armv6l.tar.gz'; \ - sha256='27a4611010c16b8c4f37ade3aada55bd5781998f02f348b164302fd5eea4eb74'; \ + url='https://dl.google.com/go/go1.25.4.linux-armv6l.tar.gz'; \ + sha256='ff86a6406310d840edb170f539a51a7efac0ac2b2f84527b1b2bf5935fc4ab6d'; \ ;; \ 'armv7') \ - url='https://dl.google.com/go/go1.23.6.linux-armv6l.tar.gz'; \ - sha256='27a4611010c16b8c4f37ade3aada55bd5781998f02f348b164302fd5eea4eb74'; \ + url='https://dl.google.com/go/go1.25.4.linux-armv6l.tar.gz'; \ + sha256='ff86a6406310d840edb170f539a51a7efac0ac2b2f84527b1b2bf5935fc4ab6d'; \ ;; \ 'aarch64') \ - url='https://dl.google.com/go/go1.23.6.linux-arm64.tar.gz'; \ - sha256='561c780e8f4a8955d32bf72e46af0b5ee5e0debe1e4633df9a03781878219202'; \ + url='https://dl.google.com/go/go1.25.4.linux-arm64.tar.gz'; \ + sha256='a68e86d4b72c2c2fecf7dfed667680b6c2a071221bbdb6913cf83ce3f80d9ff0'; \ ;; \ 'x86') \ - url='https://dl.google.com/go/go1.23.6.linux-386.tar.gz'; \ - sha256='e61f87693169c0bbcc43363128f1e929b9dff0b7f448573f1bdd4e4a0b9687ba'; \ + url='https://dl.google.com/go/go1.25.4.linux-386.tar.gz'; \ + sha256='0cf5f721ab7c5e7a170dedb2b51d9b1fedfe6ef1b2c626bf7a47fb9a613c5d96'; \ ;; \ 'ppc64le') \ - url='https://dl.google.com/go/go1.23.6.linux-ppc64le.tar.gz'; \ - sha256='0f817201e83d78ddbfa27f5f78d9b72450b92cc21d5e045145efacd0d3244a99'; \ + url='https://dl.google.com/go/go1.25.4.linux-ppc64le.tar.gz'; \ + sha256='38c8ac8463537c99fbc1ef368f243b626144446c09db71b1d20634a4237c966d'; \ ;; \ 'riscv64') \ - url='https://dl.google.com/go/go1.23.6.linux-riscv64.tar.gz'; \ - sha256='f95f7f817ab22ecab4503d0704d6449ea1aa26a595f57bf9b9f94ddf2aa7c1f3'; \ + url='https://dl.google.com/go/go1.25.4.linux-riscv64.tar.gz'; \ + sha256='0a00a0eba831b5fe511e852909b99b83992ea09e81fdfbd9f805e5a4b646f803'; \ ;; \ 's390x') \ - url='https://dl.google.com/go/go1.23.6.linux-s390x.tar.gz'; \ - sha256='321e7ed0d5416f731479c52fa7610b52b8079a8061967bd48cec6d66f671a60e'; \ + url='https://dl.google.com/go/go1.25.4.linux-s390x.tar.gz'; \ + sha256='2482e7b3b924348b120b6d7d7c13035905c009c2a3ecc0c8dc56bf0fd3184a58'; \ ;; \ *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ esac; \ @@ -110,11 +110,11 @@ RUN set -eux; \ [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + -FROM alpine:3.20 +FROM alpine:3.22 RUN apk add --no-cache ca-certificates -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 # don't auto-upgrade the gotoolchain # https://github.com/docker-library/golang/issues/472 diff --git a/1.23/bookworm/Dockerfile b/1.25/bookworm/Dockerfile similarity index 67% rename from 1.23/bookworm/Dockerfile rename to 1.25/bookworm/Dockerfile index df13922f..6eb46025 100644 --- a/1.23/bookworm/Dockerfile +++ b/1.25/bookworm/Dockerfile @@ -8,7 +8,7 @@ FROM buildpack-deps:bookworm-scm AS build ENV PATH /usr/local/go/bin:$PATH -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 RUN set -eux; \ now="$(date '+%s')"; \ @@ -16,36 +16,36 @@ RUN set -eux; \ url=; \ case "$arch" in \ 'amd64') \ - url='https://dl.google.com/go/go1.23.6.linux-amd64.tar.gz'; \ - sha256='9379441ea310de000f33a4dc767bd966e72ab2826270e038e78b2c53c2e7802d'; \ + url='https://dl.google.com/go/go1.25.4.linux-amd64.tar.gz'; \ + sha256='9fa5ffeda4170de60f67f3aa0f824e426421ba724c21e133c1e35d6159ca1bec'; \ ;; \ 'armhf') \ - url='https://dl.google.com/go/go1.23.6.linux-armv6l.tar.gz'; \ - sha256='27a4611010c16b8c4f37ade3aada55bd5781998f02f348b164302fd5eea4eb74'; \ + url='https://dl.google.com/go/go1.25.4.linux-armv6l.tar.gz'; \ + sha256='ff86a6406310d840edb170f539a51a7efac0ac2b2f84527b1b2bf5935fc4ab6d'; \ ;; \ 'arm64') \ - url='https://dl.google.com/go/go1.23.6.linux-arm64.tar.gz'; \ - sha256='561c780e8f4a8955d32bf72e46af0b5ee5e0debe1e4633df9a03781878219202'; \ + url='https://dl.google.com/go/go1.25.4.linux-arm64.tar.gz'; \ + sha256='a68e86d4b72c2c2fecf7dfed667680b6c2a071221bbdb6913cf83ce3f80d9ff0'; \ ;; \ 'i386') \ - url='https://dl.google.com/go/go1.23.6.linux-386.tar.gz'; \ - sha256='e61f87693169c0bbcc43363128f1e929b9dff0b7f448573f1bdd4e4a0b9687ba'; \ + url='https://dl.google.com/go/go1.25.4.linux-386.tar.gz'; \ + sha256='0cf5f721ab7c5e7a170dedb2b51d9b1fedfe6ef1b2c626bf7a47fb9a613c5d96'; \ ;; \ 'mips64el') \ - url='https://dl.google.com/go/go1.23.6.linux-mips64le.tar.gz'; \ - sha256='74ca7bc475bcc084c6718b74df024d7de9612932cea8a6dc75e29d3a5315a23a'; \ + url='https://dl.google.com/go/go1.25.4.linux-mips64le.tar.gz'; \ + sha256='7e6e914678e537de5e12158231e0dbf4e9fa8a427b4ba295128f76a88b4cfed9'; \ ;; \ 'ppc64el') \ - url='https://dl.google.com/go/go1.23.6.linux-ppc64le.tar.gz'; \ - sha256='0f817201e83d78ddbfa27f5f78d9b72450b92cc21d5e045145efacd0d3244a99'; \ + url='https://dl.google.com/go/go1.25.4.linux-ppc64le.tar.gz'; \ + sha256='38c8ac8463537c99fbc1ef368f243b626144446c09db71b1d20634a4237c966d'; \ ;; \ 'riscv64') \ - url='https://dl.google.com/go/go1.23.6.linux-riscv64.tar.gz'; \ - sha256='f95f7f817ab22ecab4503d0704d6449ea1aa26a595f57bf9b9f94ddf2aa7c1f3'; \ + url='https://dl.google.com/go/go1.25.4.linux-riscv64.tar.gz'; \ + sha256='0a00a0eba831b5fe511e852909b99b83992ea09e81fdfbd9f805e5a4b646f803'; \ ;; \ 's390x') \ - url='https://dl.google.com/go/go1.23.6.linux-s390x.tar.gz'; \ - sha256='321e7ed0d5416f731479c52fa7610b52b8079a8061967bd48cec6d66f671a60e'; \ + url='https://dl.google.com/go/go1.25.4.linux-s390x.tar.gz'; \ + sha256='2482e7b3b924348b120b6d7d7c13035905c009c2a3ecc0c8dc56bf0fd3184a58'; \ ;; \ *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ esac; \ @@ -114,9 +114,19 @@ RUN set -eux; \ make \ pkg-config \ ; \ +# go depends on "gold" explicitly on arm64 +# https://github.com/docker-library/golang/issues/570 (go depends on "gold" explicitly on arm64) +# https://github.com/golang/go/issues/22040 +# ... and as of trixie, "gold" is removed from the "binutils" package: +# > WARNING: gold is being removed from binutils, and is deprecated upstream. +# (and available as "binutils-gold" which is also a virtual on bookworm so we can reasonably be explicit everywhere) + dpkgArch="$(dpkg --print-architecture)"; \ + if [ "$dpkgArch" = 'arm64' ]; then \ + apt-get install -y --no-install-recommends binutils-gold; \ + fi; \ rm -rf /var/lib/apt/lists/* -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 # don't auto-upgrade the gotoolchain # https://github.com/docker-library/golang/issues/472 diff --git a/1.23/bullseye/Dockerfile b/1.25/trixie/Dockerfile similarity index 66% rename from 1.23/bullseye/Dockerfile rename to 1.25/trixie/Dockerfile index 215b6e36..c38e8211 100644 --- a/1.23/bullseye/Dockerfile +++ b/1.25/trixie/Dockerfile @@ -4,11 +4,11 @@ # PLEASE DO NOT EDIT IT DIRECTLY. # -FROM buildpack-deps:bullseye-scm AS build +FROM buildpack-deps:trixie-scm AS build ENV PATH /usr/local/go/bin:$PATH -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 RUN set -eux; \ now="$(date '+%s')"; \ @@ -16,36 +16,36 @@ RUN set -eux; \ url=; \ case "$arch" in \ 'amd64') \ - url='https://dl.google.com/go/go1.23.6.linux-amd64.tar.gz'; \ - sha256='9379441ea310de000f33a4dc767bd966e72ab2826270e038e78b2c53c2e7802d'; \ + url='https://dl.google.com/go/go1.25.4.linux-amd64.tar.gz'; \ + sha256='9fa5ffeda4170de60f67f3aa0f824e426421ba724c21e133c1e35d6159ca1bec'; \ ;; \ 'armhf') \ - url='https://dl.google.com/go/go1.23.6.linux-armv6l.tar.gz'; \ - sha256='27a4611010c16b8c4f37ade3aada55bd5781998f02f348b164302fd5eea4eb74'; \ + url='https://dl.google.com/go/go1.25.4.linux-armv6l.tar.gz'; \ + sha256='ff86a6406310d840edb170f539a51a7efac0ac2b2f84527b1b2bf5935fc4ab6d'; \ ;; \ 'arm64') \ - url='https://dl.google.com/go/go1.23.6.linux-arm64.tar.gz'; \ - sha256='561c780e8f4a8955d32bf72e46af0b5ee5e0debe1e4633df9a03781878219202'; \ + url='https://dl.google.com/go/go1.25.4.linux-arm64.tar.gz'; \ + sha256='a68e86d4b72c2c2fecf7dfed667680b6c2a071221bbdb6913cf83ce3f80d9ff0'; \ ;; \ 'i386') \ - url='https://dl.google.com/go/go1.23.6.linux-386.tar.gz'; \ - sha256='e61f87693169c0bbcc43363128f1e929b9dff0b7f448573f1bdd4e4a0b9687ba'; \ + url='https://dl.google.com/go/go1.25.4.linux-386.tar.gz'; \ + sha256='0cf5f721ab7c5e7a170dedb2b51d9b1fedfe6ef1b2c626bf7a47fb9a613c5d96'; \ ;; \ 'mips64el') \ - url='https://dl.google.com/go/go1.23.6.linux-mips64le.tar.gz'; \ - sha256='74ca7bc475bcc084c6718b74df024d7de9612932cea8a6dc75e29d3a5315a23a'; \ + url='https://dl.google.com/go/go1.25.4.linux-mips64le.tar.gz'; \ + sha256='7e6e914678e537de5e12158231e0dbf4e9fa8a427b4ba295128f76a88b4cfed9'; \ ;; \ 'ppc64el') \ - url='https://dl.google.com/go/go1.23.6.linux-ppc64le.tar.gz'; \ - sha256='0f817201e83d78ddbfa27f5f78d9b72450b92cc21d5e045145efacd0d3244a99'; \ + url='https://dl.google.com/go/go1.25.4.linux-ppc64le.tar.gz'; \ + sha256='38c8ac8463537c99fbc1ef368f243b626144446c09db71b1d20634a4237c966d'; \ ;; \ 'riscv64') \ - url='https://dl.google.com/go/go1.23.6.linux-riscv64.tar.gz'; \ - sha256='f95f7f817ab22ecab4503d0704d6449ea1aa26a595f57bf9b9f94ddf2aa7c1f3'; \ + url='https://dl.google.com/go/go1.25.4.linux-riscv64.tar.gz'; \ + sha256='0a00a0eba831b5fe511e852909b99b83992ea09e81fdfbd9f805e5a4b646f803'; \ ;; \ 's390x') \ - url='https://dl.google.com/go/go1.23.6.linux-s390x.tar.gz'; \ - sha256='321e7ed0d5416f731479c52fa7610b52b8079a8061967bd48cec6d66f671a60e'; \ + url='https://dl.google.com/go/go1.25.4.linux-s390x.tar.gz'; \ + sha256='2482e7b3b924348b120b6d7d7c13035905c009c2a3ecc0c8dc56bf0fd3184a58'; \ ;; \ *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ esac; \ @@ -102,7 +102,7 @@ RUN set -eux; \ [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + -FROM buildpack-deps:bullseye-scm +FROM buildpack-deps:trixie-scm # install cgo-related dependencies RUN set -eux; \ @@ -114,9 +114,19 @@ RUN set -eux; \ make \ pkg-config \ ; \ +# go depends on "gold" explicitly on arm64 +# https://github.com/docker-library/golang/issues/570 (go depends on "gold" explicitly on arm64) +# https://github.com/golang/go/issues/22040 +# ... and as of trixie, "gold" is removed from the "binutils" package: +# > WARNING: gold is being removed from binutils, and is deprecated upstream. +# (and available as "binutils-gold" which is also a virtual on bookworm so we can reasonably be explicit everywhere) + dpkgArch="$(dpkg --print-architecture)"; \ + if [ "$dpkgArch" = 'arm64' ]; then \ + apt-get install -y --no-install-recommends binutils-gold; \ + fi; \ rm -rf /var/lib/apt/lists/* -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 # don't auto-upgrade the gotoolchain # https://github.com/docker-library/golang/issues/472 diff --git a/1.23/windows/nanoserver-ltsc2022/Dockerfile b/1.25/windows/nanoserver-ltsc2022/Dockerfile similarity index 92% rename from 1.23/windows/nanoserver-ltsc2022/Dockerfile rename to 1.25/windows/nanoserver-ltsc2022/Dockerfile index 7d4b27eb..25870356 100644 --- a/1.23/windows/nanoserver-ltsc2022/Dockerfile +++ b/1.25/windows/nanoserver-ltsc2022/Dockerfile @@ -21,10 +21,10 @@ RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" USER ContainerUser # doing this first to share cache across versions more aggressively -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 # Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon -COPY --from=golang:1.23.6-windowsservercore-ltsc2022 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] +COPY --from=golang:1.25.4-windowsservercore-ltsc2022 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] RUN go version WORKDIR $GOPATH diff --git a/1.23/windows/nanoserver-ltsc2025/Dockerfile b/1.25/windows/nanoserver-ltsc2025/Dockerfile similarity index 92% rename from 1.23/windows/nanoserver-ltsc2025/Dockerfile rename to 1.25/windows/nanoserver-ltsc2025/Dockerfile index 83272fcc..6e5ee3c0 100644 --- a/1.23/windows/nanoserver-ltsc2025/Dockerfile +++ b/1.25/windows/nanoserver-ltsc2025/Dockerfile @@ -21,10 +21,10 @@ RUN setx /m PATH "%GOPATH%\bin;C:\Program Files\Go\bin;%PATH%" USER ContainerUser # doing this first to share cache across versions more aggressively -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 # Docker's Windows path parsing is absolutely *cursed*; please just trust me on this one -Tianon -COPY --from=golang:1.23.6-windowsservercore-ltsc2025 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] +COPY --from=golang:1.25.4-windowsservercore-ltsc2025 ["C:\\\\Program Files\\\\Go","C:\\\\Program Files\\\\Go"] RUN go version WORKDIR $GOPATH diff --git a/1.23/windows/windowsservercore-ltsc2022/Dockerfile b/1.25/windows/windowsservercore-ltsc2022/Dockerfile similarity index 85% rename from 1.23/windows/windowsservercore-ltsc2022/Dockerfile rename to 1.25/windows/windowsservercore-ltsc2022/Dockerfile index 0fce5664..ed4cddc9 100644 --- a/1.23/windows/windowsservercore-ltsc2022/Dockerfile +++ b/1.25/windows/windowsservercore-ltsc2022/Dockerfile @@ -10,13 +10,14 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2022 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 +# https://github.com/git-for-windows/git/wiki/MinGit +# https://gitforwindows.org/ +# https://github.com/git-for-windows/git/releases +# TODO in some future release, consider the BusyBox variant? maybe only once https://github.com/git-for-windows/git/issues/1439 is officially closed? +ENV GIT_VERSION 2.48.1 ENV GIT_TAG v${GIT_VERSION}.windows.1 ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 +ENV GIT_DOWNLOAD_SHA256 11e8f462726827acccc7ecdad541f2544cbe5506d70fef4fa1ffac7c16288709 # steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ @@ -42,6 +43,9 @@ RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ git version; \ \ Write-Host 'Complete.'; +# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ +# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." +# "It currently requires only ~45MB on disk." # for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) ENV GOPATH C:\\go @@ -53,14 +57,14 @@ RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH) [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); # doing this first to share cache across versions more aggressively -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 -RUN $url = 'https://dl.google.com/go/go1.23.6.windows-amd64.zip'; \ +RUN $url = 'https://dl.google.com/go/go1.25.4.windows-amd64.zip'; \ Write-Host ('Downloading {0} ...' -f $url); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ \ - $sha256 = '53fec1586850b2cf5ad6438341ff7adc5f6700dd3ec1cfa3f5e8b141df190243'; \ + $sha256 = '6dad204d42719795f22067553b2b042c0e710b32c5a00f6c67892865167fdfd0'; \ Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ Write-Host 'FAILED!'; \ diff --git a/1.23/windows/windowsservercore-ltsc2025/Dockerfile b/1.25/windows/windowsservercore-ltsc2025/Dockerfile similarity index 85% rename from 1.23/windows/windowsservercore-ltsc2025/Dockerfile rename to 1.25/windows/windowsservercore-ltsc2025/Dockerfile index 9c2e90da..a8038cbd 100644 --- a/1.23/windows/windowsservercore-ltsc2025/Dockerfile +++ b/1.25/windows/windowsservercore-ltsc2025/Dockerfile @@ -10,13 +10,14 @@ FROM mcr.microsoft.com/windows/servercore:ltsc2025 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 +# https://github.com/git-for-windows/git/wiki/MinGit +# https://gitforwindows.org/ +# https://github.com/git-for-windows/git/releases +# TODO in some future release, consider the BusyBox variant? maybe only once https://github.com/git-for-windows/git/issues/1439 is officially closed? +ENV GIT_VERSION 2.48.1 ENV GIT_TAG v${GIT_VERSION}.windows.1 ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 +ENV GIT_DOWNLOAD_SHA256 11e8f462726827acccc7ecdad541f2544cbe5506d70fef4fa1ffac7c16288709 # steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ @@ -42,6 +43,9 @@ RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ git version; \ \ Write-Host 'Complete.'; +# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ +# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." +# "It currently requires only ~45MB on disk." # for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) ENV GOPATH C:\\go @@ -53,14 +57,14 @@ RUN $newPath = ('{0}\bin;C:\Program Files\Go\bin;{1}' -f $env:GOPATH, $env:PATH) [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine); # doing this first to share cache across versions more aggressively -ENV GOLANG_VERSION 1.23.6 +ENV GOLANG_VERSION 1.25.4 -RUN $url = 'https://dl.google.com/go/go1.23.6.windows-amd64.zip'; \ +RUN $url = 'https://dl.google.com/go/go1.25.4.windows-amd64.zip'; \ Write-Host ('Downloading {0} ...' -f $url); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ Invoke-WebRequest -Uri $url -OutFile 'go.zip'; \ \ - $sha256 = '53fec1586850b2cf5ad6438341ff7adc5f6700dd3ec1cfa3f5e8b141df190243'; \ + $sha256 = '6dad204d42719795f22067553b2b042c0e710b32c5a00f6c67892865167fdfd0'; \ Write-Host ('Verifying sha256 ({0}) ...' -f $sha256); \ if ((Get-FileHash go.zip -Algorithm sha256).Hash -ne $sha256) { \ Write-Host 'FAILED!'; \ diff --git a/Dockerfile-linux.template b/Dockerfile-linux.template index 9c2fb247..6af4ce94 100644 --- a/Dockerfile-linux.template +++ b/Dockerfile-linux.template @@ -13,7 +13,15 @@ FROM buildpack-deps:{{ env.variant }}-scm AS build ENV PATH /usr/local/go/bin:$PATH +{{ if env.version != "tip" then ( -}} ENV GOLANG_VERSION {{ .version }} +{{ ) else ( -}} +COPY --from=golang:{{ env.variant }} /usr/local/go /usr/local/goroot-bootstrap + +# {{ .version }}: https://github.com/golang/go/tree/{{ .commit.version }} +ARG GOLANG_COMMIT={{ .commit.version | @sh }} +ENV GOLANG_COMMIT $GOLANG_COMMIT +{{ ) end -}} {{ def os_arches: @@ -54,16 +62,23 @@ RUN set -eux; \ now="$(date '+%s')"; \ {{ if is_alpine then ( -}} apk add --no-cache --virtual .fetch-deps \ +{{ if env.version != "tip" then ( -}} ca-certificates \ gnupg \ # busybox's "tar" doesn't handle directory mtime correctly, so our SOURCE_DATE_EPOCH lookup doesn't work (the mtime of "/usr/local/go" always ends up being the extraction timestamp) tar \ +{{ ) else ( -}} + bash \ + git \ +{{ ) end -}} ; \ arch="$(apk --print-arch)"; \ {{ ) else ( -}} arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \ {{ ) end -}} +{{ if env.version != "tip" then ( -}} url=; \ +{{ ) else "" end -}} case "$arch" in \ {{ [ @@ -78,8 +93,12 @@ RUN set -eux; \ | ( -}} {{ $osArch | @sh }}) \ +{{ if env.version != "tip" then ( -}} url={{ .url | @sh }}; \ sha256={{ .sha256 | @sh }}; \ +{{ ) else ( -}} + export {{ .env | to_entries | sort_by(.key) | map(.key + "=" + (.value | @sh)) | join(" ") }}; \ +{{ ) end -}} ;; \ {{ ) @@ -88,6 +107,7 @@ RUN set -eux; \ *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ esac; \ \ +{{ if env.version != "tip" then ( -}} wget -O go.tgz.asc "$url.asc"; \ wget -O go.tgz "$url"{{ if is_alpine then "" else " --progress=dot:giga" end }}; \ echo "$sha256 *go.tgz" | sha256sum -c -; \ @@ -107,6 +127,18 @@ RUN set -eux; \ \ # save the timestamp from the tarball so we can restore it for reproducibility, if necessary (see below) SOURCE_DATE_EPOCH="$(stat -c '%Y' /usr/local/go)"; \ +{{ ) else ( -}} +# before we get too far, let's validate that our "bootstrap" Go works + export GOROOT_BOOTSTRAP=/usr/local/goroot-bootstrap; \ + "$GOROOT_BOOTSTRAP/bin/go" version; \ + \ + git init --quiet /usr/local/go; \ + git -C /usr/local/go fetch --depth 1 https://github.com/golang/go.git "$GOLANG_COMMIT:"; \ + git -C /usr/local/go checkout --quiet FETCH_HEAD; \ + \ +# save the Git timestamp so we can use it for reproducibility + SOURCE_DATE_EPOCH="$(git -C /usr/local/go log -1 --format='format:%ct' HEAD)"; \ +{{ ) end -}} export SOURCE_DATE_EPOCH; \ touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ # for logging validation/edification @@ -114,7 +146,37 @@ RUN set -eux; \ # sanity check (detected value should be older than our wall clock) [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ \ -{{ if .arches["arm32v7"].url // "" | contains("armv6") then ( -}} +{{ if env.version == "tip" then ( -}} + ( \ + export \ + GOCACHE='/tmp/gocache' \ +# set GOHOST* to make sure explicitly 32bit builds on 64bit infra work correctly + GOHOSTOS="$GOOS" \ + GOHOSTARCH="$GOARCH" \ + ; \ + \ + cd /usr/local/go/src; \ + ./make.bash; \ + \ +# remove a few intermediate / bootstrapping files the official binary release tarballs do not contain (and ".git" that is hard to make reproducible) + rm -rf \ + /usr/local/go/.git* \ + /usr/local/go/pkg/*/cmd \ + /usr/local/go/pkg/bootstrap \ + /usr/local/go/pkg/obj \ + /usr/local/go/pkg/tool/*/api \ + /usr/local/go/pkg/tool/*/go_bootstrap \ + /usr/local/go/src/cmd/dist/dist \ + "$GOCACHE" \ + ; \ + \ +# clamp timestamps for reproducibility (allows "COPY --link" to be more clever/useful) + touch -t "$touchy" /usr/local/.go-date-stamp; \ + find /usr/local/go -depth -newer /usr/local/.go-date-stamp -exec touch -ht "$touchy" '{}' +; \ + rm /usr/local/.go-date-stamp; \ + ); \ + \ +{{ ) elif .arches["arm32v7"].url // "" | contains("armv6") then ( -}} if [ "$arch" = {{ os_arches["arm32v7"] | @sh }} ]; then \ [ -s /usr/local/go/go.env ]; \ before="$(go env GOARM)"; [ "$before" != {{ .arches["arm32v7"].env["GOARM"] | @sh }} ]; \ @@ -163,11 +225,23 @@ RUN set -eux; \ make \ pkg-config \ ; \ +# go depends on "gold" explicitly on arm64 +# https://github.com/docker-library/golang/issues/570 (go depends on "gold" explicitly on arm64) +# https://github.com/golang/go/issues/22040 +# ... and as of trixie, "gold" is removed from the "binutils" package: +# > WARNING: gold is being removed from binutils, and is deprecated upstream. +# (and available as "binutils-gold" which is also a virtual on bookworm so we can reasonably be explicit everywhere) + dpkgArch="$(dpkg --print-architecture)"; \ + if [ "$dpkgArch" = 'arm64' ]; then \ + apt-get install -y --no-install-recommends binutils-gold; \ + fi; \ rm -rf /var/lib/apt/lists/* {{ ) end -}} +{{ if env.version != "tip" then ( -}} ENV GOLANG_VERSION {{ .version }} +{{ ) else "" end -}} # don't auto-upgrade the gotoolchain # https://github.com/docker-library/golang/issues/472 ENV GOTOOLCHAIN=local diff --git a/Dockerfile-windows-servercore.template b/Dockerfile-windows-servercore.template index 97f6f3fe..dda8f8f9 100644 --- a/Dockerfile-windows-servercore.template +++ b/Dockerfile-windows-servercore.template @@ -4,13 +4,14 @@ FROM mcr.microsoft.com/windows/{{ env.windowsVariant }}:{{ env.windowsRelease }} SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"] # install MinGit (especially for "go get") -# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ -# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." -# "It currently requires only ~45MB on disk." -ENV GIT_VERSION 2.23.0 +# https://github.com/git-for-windows/git/wiki/MinGit +# https://gitforwindows.org/ +# https://github.com/git-for-windows/git/releases +# TODO in some future release, consider the BusyBox variant? maybe only once https://github.com/git-for-windows/git/issues/1439 is officially closed? +ENV GIT_VERSION 2.48.1 ENV GIT_TAG v${GIT_VERSION}.windows.1 ENV GIT_DOWNLOAD_URL https://github.com/git-for-windows/git/releases/download/${GIT_TAG}/MinGit-${GIT_VERSION}-64-bit.zip -ENV GIT_DOWNLOAD_SHA256 8f65208f92c0b4c3ae4c0cf02d4b5f6791d539cd1a07b2df62b7116467724735 +ENV GIT_DOWNLOAD_SHA256 11e8f462726827acccc7ecdad541f2544cbe5506d70fef4fa1ffac7c16288709 # steps inspired by "chcolateyInstall.ps1" from "git.install" (https://chocolatey.org/packages/git.install) RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; \ @@ -36,6 +37,9 @@ RUN Write-Host ('Downloading {0} ...' -f $env:GIT_DOWNLOAD_URL); \ git version; \ \ Write-Host 'Complete.'; +# https://blogs.msdn.microsoft.com/visualstudioalm/2016/09/03/whats-new-in-git-for-windows-2-10/ +# "Essentially, it is a Git for Windows that was stripped down as much as possible without sacrificing the functionality in which 3rd-party software may be interested." +# "It currently requires only ~45MB on disk." # for 1.17+, we'll follow the (new) Go upstream default for install (https://golang.org/cl/283600), which frees up C:\go to be the default GOPATH and thus match the Linux images more closely (https://github.com/docker-library/golang/issues/288) ENV GOPATH C:\\go diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 3a79b052..979e9800 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -2,19 +2,24 @@ set -Eeuo pipefail declare -A aliases=( - [1.23]='1 latest' + #[1.24]='1 latest' ) +# because we sort in versions.sh, we can assume the first non-rc in versions.json is the "latest" release +latest="$(jq -r 'first(keys_unsorted - ["tip"] | .[] | select(endswith("-rc") | not))' versions.json)" +[ -n "$latest" ] +aliases["$latest"]+=' 1 latest' +export latest + self="$(basename "$BASH_SOURCE")" cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" if [ "$#" -eq 0 ]; then - versions="$(jq -r 'keys | map(@sh) | join(" ")' versions.json)" + versions="$(jq -r 'keys_unsorted | map(@sh) | join(" ")' versions.json)" eval "set -- $versions" fi -# sort version numbers with highest first -IFS=$'\n'; set -- $(sort -rV <<<"$*"); unset IFS +# no sort because we already sorted the keys in versions.sh (hence "keys_unsorted" above) # get the most recent commit which modified any of "$@" fileCommit() { @@ -113,8 +118,6 @@ for version; do fullVersion="$(jq -r '.[env.version].version' versions.json)" - [[ "$fullVersion" == *.*[^0-9]* ]] || fullVersion+='.0' - if [ "$version" = "$fullVersion" ]; then baseAliases=( "${versionAliases[@]}" ) else @@ -141,7 +144,13 @@ for version; do # cross-reference with supported architectures for arch in $variantArches; do - if ! jq -e --arg arch "$arch" '.[env.version].arches[$arch].supported' versions.json &> /dev/null; then + if ! jq -e --arg arch "$arch" ' + .[env.version].arches[$arch].supported + # if the version we are checking is "tip", we need to cross-reference "latest" also (since it uses latest as GOROOT_BOOTSTRAP via COPY --from) + and if env.version == "tip" then + .[env.latest].arches[$arch].supported + else true end + ' versions.json &> /dev/null; then variantArches="$(sed <<<" $variantArches " -e "s/ $arch / /g")" fi done diff --git a/tip/alpine3.21/Dockerfile b/tip/alpine3.21/Dockerfile new file mode 100644 index 00000000..0e294c31 --- /dev/null +++ b/tip/alpine3.21/Dockerfile @@ -0,0 +1,126 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM alpine:3.21 AS build + +ENV PATH /usr/local/go/bin:$PATH + +COPY --from=golang:alpine3.21 /usr/local/go /usr/local/goroot-bootstrap + +# tip-20251108: https://github.com/golang/go/tree/e8ed85d6c22d9530523315c3048ed0455d205bff +ARG GOLANG_COMMIT='e8ed85d6c22d9530523315c3048ed0455d205bff' +ENV GOLANG_COMMIT $GOLANG_COMMIT + +RUN set -eux; \ + now="$(date '+%s')"; \ + apk add --no-cache --virtual .fetch-deps \ + bash \ + git \ + ; \ + arch="$(apk --print-arch)"; \ + case "$arch" in \ + 'x86_64') \ + export GOAMD64='v1' GOARCH='amd64' GOOS='linux'; \ + ;; \ + 'armhf') \ + export GOARCH='arm' GOARM='6' GOOS='linux'; \ + ;; \ + 'armv7') \ + export GOARCH='arm' GOARM='7' GOOS='linux'; \ + ;; \ + 'aarch64') \ + export GOARCH='arm64' GOARM64='v8.0' GOOS='linux'; \ + ;; \ + 'x86') \ + export GO386='softfloat' GOARCH='386' GOOS='linux'; \ + ;; \ + 'ppc64le') \ + export GOARCH='ppc64le' GOOS='linux'; \ + ;; \ + 'riscv64') \ + export GOARCH='riscv64' GOOS='linux' GORISCV64='rva20u64'; \ + ;; \ + 's390x') \ + export GOARCH='s390x' GOOS='linux'; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ + esac; \ + \ +# before we get too far, let's validate that our "bootstrap" Go works + export GOROOT_BOOTSTRAP=/usr/local/goroot-bootstrap; \ + "$GOROOT_BOOTSTRAP/bin/go" version; \ + \ + git init --quiet /usr/local/go; \ + git -C /usr/local/go fetch --depth 1 https://github.com/golang/go.git "$GOLANG_COMMIT:"; \ + git -C /usr/local/go checkout --quiet FETCH_HEAD; \ + \ +# save the Git timestamp so we can use it for reproducibility + SOURCE_DATE_EPOCH="$(git -C /usr/local/go log -1 --format='format:%ct' HEAD)"; \ + export SOURCE_DATE_EPOCH; \ + touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ +# for logging validation/edification + date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ +# sanity check (detected value should be older than our wall clock) + [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ + \ + ( \ + export \ + GOCACHE='/tmp/gocache' \ +# set GOHOST* to make sure explicitly 32bit builds on 64bit infra work correctly + GOHOSTOS="$GOOS" \ + GOHOSTARCH="$GOARCH" \ + ; \ + \ + cd /usr/local/go/src; \ + ./make.bash; \ + \ +# remove a few intermediate / bootstrapping files the official binary release tarballs do not contain (and ".git" that is hard to make reproducible) + rm -rf \ + /usr/local/go/.git* \ + /usr/local/go/pkg/*/cmd \ + /usr/local/go/pkg/bootstrap \ + /usr/local/go/pkg/obj \ + /usr/local/go/pkg/tool/*/api \ + /usr/local/go/pkg/tool/*/go_bootstrap \ + /usr/local/go/src/cmd/dist/dist \ + "$GOCACHE" \ + ; \ + \ +# clamp timestamps for reproducibility (allows "COPY --link" to be more clever/useful) + touch -t "$touchy" /usr/local/.go-date-stamp; \ + find /usr/local/go -depth -newer /usr/local/.go-date-stamp -exec touch -ht "$touchy" '{}' +; \ + rm /usr/local/.go-date-stamp; \ + ); \ + \ +# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want + mkdir /target /target/usr /target/usr/local; \ + mv -vT /usr/local/go /target/usr/local/go; \ + ln -svfT /target/usr/local/go /usr/local/go; \ + touch -t "$touchy" /target/usr/local /target/usr /target; \ + \ + apk del --no-network .fetch-deps; \ + \ +# smoke test + go version; \ +# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) + epoch="$(stat -c '%Y' /target/usr/local/go)"; \ + [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ + find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + + +FROM alpine:3.21 + +RUN apk add --no-cache ca-certificates + +# don't auto-upgrade the gotoolchain +# https://github.com/docker-library/golang/issues/472 +ENV GOTOOLCHAIN=local + +ENV GOPATH /go +ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH +# (see notes above about "COPY --link") +COPY --from=build --link /target/ / +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" +WORKDIR $GOPATH diff --git a/tip/alpine3.22/Dockerfile b/tip/alpine3.22/Dockerfile new file mode 100644 index 00000000..15247871 --- /dev/null +++ b/tip/alpine3.22/Dockerfile @@ -0,0 +1,126 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM alpine:3.22 AS build + +ENV PATH /usr/local/go/bin:$PATH + +COPY --from=golang:alpine3.22 /usr/local/go /usr/local/goroot-bootstrap + +# tip-20251108: https://github.com/golang/go/tree/e8ed85d6c22d9530523315c3048ed0455d205bff +ARG GOLANG_COMMIT='e8ed85d6c22d9530523315c3048ed0455d205bff' +ENV GOLANG_COMMIT $GOLANG_COMMIT + +RUN set -eux; \ + now="$(date '+%s')"; \ + apk add --no-cache --virtual .fetch-deps \ + bash \ + git \ + ; \ + arch="$(apk --print-arch)"; \ + case "$arch" in \ + 'x86_64') \ + export GOAMD64='v1' GOARCH='amd64' GOOS='linux'; \ + ;; \ + 'armhf') \ + export GOARCH='arm' GOARM='6' GOOS='linux'; \ + ;; \ + 'armv7') \ + export GOARCH='arm' GOARM='7' GOOS='linux'; \ + ;; \ + 'aarch64') \ + export GOARCH='arm64' GOARM64='v8.0' GOOS='linux'; \ + ;; \ + 'x86') \ + export GO386='softfloat' GOARCH='386' GOOS='linux'; \ + ;; \ + 'ppc64le') \ + export GOARCH='ppc64le' GOOS='linux'; \ + ;; \ + 'riscv64') \ + export GOARCH='riscv64' GOOS='linux' GORISCV64='rva20u64'; \ + ;; \ + 's390x') \ + export GOARCH='s390x' GOOS='linux'; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ + esac; \ + \ +# before we get too far, let's validate that our "bootstrap" Go works + export GOROOT_BOOTSTRAP=/usr/local/goroot-bootstrap; \ + "$GOROOT_BOOTSTRAP/bin/go" version; \ + \ + git init --quiet /usr/local/go; \ + git -C /usr/local/go fetch --depth 1 https://github.com/golang/go.git "$GOLANG_COMMIT:"; \ + git -C /usr/local/go checkout --quiet FETCH_HEAD; \ + \ +# save the Git timestamp so we can use it for reproducibility + SOURCE_DATE_EPOCH="$(git -C /usr/local/go log -1 --format='format:%ct' HEAD)"; \ + export SOURCE_DATE_EPOCH; \ + touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ +# for logging validation/edification + date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ +# sanity check (detected value should be older than our wall clock) + [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ + \ + ( \ + export \ + GOCACHE='/tmp/gocache' \ +# set GOHOST* to make sure explicitly 32bit builds on 64bit infra work correctly + GOHOSTOS="$GOOS" \ + GOHOSTARCH="$GOARCH" \ + ; \ + \ + cd /usr/local/go/src; \ + ./make.bash; \ + \ +# remove a few intermediate / bootstrapping files the official binary release tarballs do not contain (and ".git" that is hard to make reproducible) + rm -rf \ + /usr/local/go/.git* \ + /usr/local/go/pkg/*/cmd \ + /usr/local/go/pkg/bootstrap \ + /usr/local/go/pkg/obj \ + /usr/local/go/pkg/tool/*/api \ + /usr/local/go/pkg/tool/*/go_bootstrap \ + /usr/local/go/src/cmd/dist/dist \ + "$GOCACHE" \ + ; \ + \ +# clamp timestamps for reproducibility (allows "COPY --link" to be more clever/useful) + touch -t "$touchy" /usr/local/.go-date-stamp; \ + find /usr/local/go -depth -newer /usr/local/.go-date-stamp -exec touch -ht "$touchy" '{}' +; \ + rm /usr/local/.go-date-stamp; \ + ); \ + \ +# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want + mkdir /target /target/usr /target/usr/local; \ + mv -vT /usr/local/go /target/usr/local/go; \ + ln -svfT /target/usr/local/go /usr/local/go; \ + touch -t "$touchy" /target/usr/local /target/usr /target; \ + \ + apk del --no-network .fetch-deps; \ + \ +# smoke test + go version; \ +# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) + epoch="$(stat -c '%Y' /target/usr/local/go)"; \ + [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ + find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + + +FROM alpine:3.22 + +RUN apk add --no-cache ca-certificates + +# don't auto-upgrade the gotoolchain +# https://github.com/docker-library/golang/issues/472 +ENV GOTOOLCHAIN=local + +ENV GOPATH /go +ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH +# (see notes above about "COPY --link") +COPY --from=build --link /target/ / +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" +WORKDIR $GOPATH diff --git a/tip/bookworm/Dockerfile b/tip/bookworm/Dockerfile new file mode 100644 index 00000000..84a09130 --- /dev/null +++ b/tip/bookworm/Dockerfile @@ -0,0 +1,143 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM buildpack-deps:bookworm-scm AS build + +ENV PATH /usr/local/go/bin:$PATH + +COPY --from=golang:bookworm /usr/local/go /usr/local/goroot-bootstrap + +# tip-20251108: https://github.com/golang/go/tree/e8ed85d6c22d9530523315c3048ed0455d205bff +ARG GOLANG_COMMIT='e8ed85d6c22d9530523315c3048ed0455d205bff' +ENV GOLANG_COMMIT $GOLANG_COMMIT + +RUN set -eux; \ + now="$(date '+%s')"; \ + arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \ + case "$arch" in \ + 'amd64') \ + export GOAMD64='v1' GOARCH='amd64' GOOS='linux'; \ + ;; \ + 'armel') \ + export GOARCH='arm' GOARM='5' GOOS='linux'; \ + ;; \ + 'armhf') \ + export GOARCH='arm' GOARM='7' GOOS='linux'; \ + ;; \ + 'arm64') \ + export GOARCH='arm64' GOARM64='v8.0' GOOS='linux'; \ + ;; \ + 'i386') \ + export GO386='softfloat' GOARCH='386' GOOS='linux'; \ + ;; \ + 'mips64el') \ + export GOARCH='mips64le' GOOS='linux'; \ + ;; \ + 'ppc64el') \ + export GOARCH='ppc64le' GOOS='linux'; \ + ;; \ + 'riscv64') \ + export GOARCH='riscv64' GOOS='linux' GORISCV64='rva20u64'; \ + ;; \ + 's390x') \ + export GOARCH='s390x' GOOS='linux'; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ + esac; \ + \ +# before we get too far, let's validate that our "bootstrap" Go works + export GOROOT_BOOTSTRAP=/usr/local/goroot-bootstrap; \ + "$GOROOT_BOOTSTRAP/bin/go" version; \ + \ + git init --quiet /usr/local/go; \ + git -C /usr/local/go fetch --depth 1 https://github.com/golang/go.git "$GOLANG_COMMIT:"; \ + git -C /usr/local/go checkout --quiet FETCH_HEAD; \ + \ +# save the Git timestamp so we can use it for reproducibility + SOURCE_DATE_EPOCH="$(git -C /usr/local/go log -1 --format='format:%ct' HEAD)"; \ + export SOURCE_DATE_EPOCH; \ + touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ +# for logging validation/edification + date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ +# sanity check (detected value should be older than our wall clock) + [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ + \ + ( \ + export \ + GOCACHE='/tmp/gocache' \ +# set GOHOST* to make sure explicitly 32bit builds on 64bit infra work correctly + GOHOSTOS="$GOOS" \ + GOHOSTARCH="$GOARCH" \ + ; \ + \ + cd /usr/local/go/src; \ + ./make.bash; \ + \ +# remove a few intermediate / bootstrapping files the official binary release tarballs do not contain (and ".git" that is hard to make reproducible) + rm -rf \ + /usr/local/go/.git* \ + /usr/local/go/pkg/*/cmd \ + /usr/local/go/pkg/bootstrap \ + /usr/local/go/pkg/obj \ + /usr/local/go/pkg/tool/*/api \ + /usr/local/go/pkg/tool/*/go_bootstrap \ + /usr/local/go/src/cmd/dist/dist \ + "$GOCACHE" \ + ; \ + \ +# clamp timestamps for reproducibility (allows "COPY --link" to be more clever/useful) + touch -t "$touchy" /usr/local/.go-date-stamp; \ + find /usr/local/go -depth -newer /usr/local/.go-date-stamp -exec touch -ht "$touchy" '{}' +; \ + rm /usr/local/.go-date-stamp; \ + ); \ + \ +# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want + mkdir /target /target/usr /target/usr/local; \ + mv -vT /usr/local/go /target/usr/local/go; \ + ln -svfT /target/usr/local/go /usr/local/go; \ + touch -t "$touchy" /target/usr/local /target/usr /target; \ + \ +# smoke test + go version; \ +# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) + epoch="$(stat -c '%Y' /target/usr/local/go)"; \ + [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ + find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + + +FROM buildpack-deps:bookworm-scm + +# install cgo-related dependencies +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + g++ \ + gcc \ + libc6-dev \ + make \ + pkg-config \ + ; \ +# go depends on "gold" explicitly on arm64 +# https://github.com/docker-library/golang/issues/570 (go depends on "gold" explicitly on arm64) +# https://github.com/golang/go/issues/22040 +# ... and as of trixie, "gold" is removed from the "binutils" package: +# > WARNING: gold is being removed from binutils, and is deprecated upstream. +# (and available as "binutils-gold" which is also a virtual on bookworm so we can reasonably be explicit everywhere) + dpkgArch="$(dpkg --print-architecture)"; \ + if [ "$dpkgArch" = 'arm64' ]; then \ + apt-get install -y --no-install-recommends binutils-gold; \ + fi; \ + rm -rf /var/lib/apt/lists/* + +# don't auto-upgrade the gotoolchain +# https://github.com/docker-library/golang/issues/472 +ENV GOTOOLCHAIN=local + +ENV GOPATH /go +ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH +# (see notes above about "COPY --link") +COPY --from=build --link /target/ / +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" +WORKDIR $GOPATH diff --git a/tip/trixie/Dockerfile b/tip/trixie/Dockerfile new file mode 100644 index 00000000..23852248 --- /dev/null +++ b/tip/trixie/Dockerfile @@ -0,0 +1,143 @@ +# +# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh" +# +# PLEASE DO NOT EDIT IT DIRECTLY. +# + +FROM buildpack-deps:trixie-scm AS build + +ENV PATH /usr/local/go/bin:$PATH + +COPY --from=golang:trixie /usr/local/go /usr/local/goroot-bootstrap + +# tip-20251108: https://github.com/golang/go/tree/e8ed85d6c22d9530523315c3048ed0455d205bff +ARG GOLANG_COMMIT='e8ed85d6c22d9530523315c3048ed0455d205bff' +ENV GOLANG_COMMIT $GOLANG_COMMIT + +RUN set -eux; \ + now="$(date '+%s')"; \ + arch="$(dpkg --print-architecture)"; arch="${arch##*-}"; \ + case "$arch" in \ + 'amd64') \ + export GOAMD64='v1' GOARCH='amd64' GOOS='linux'; \ + ;; \ + 'armel') \ + export GOARCH='arm' GOARM='5' GOOS='linux'; \ + ;; \ + 'armhf') \ + export GOARCH='arm' GOARM='7' GOOS='linux'; \ + ;; \ + 'arm64') \ + export GOARCH='arm64' GOARM64='v8.0' GOOS='linux'; \ + ;; \ + 'i386') \ + export GO386='softfloat' GOARCH='386' GOOS='linux'; \ + ;; \ + 'mips64el') \ + export GOARCH='mips64le' GOOS='linux'; \ + ;; \ + 'ppc64el') \ + export GOARCH='ppc64le' GOOS='linux'; \ + ;; \ + 'riscv64') \ + export GOARCH='riscv64' GOOS='linux' GORISCV64='rva20u64'; \ + ;; \ + 's390x') \ + export GOARCH='s390x' GOOS='linux'; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$arch' (likely packaging update needed)"; exit 1 ;; \ + esac; \ + \ +# before we get too far, let's validate that our "bootstrap" Go works + export GOROOT_BOOTSTRAP=/usr/local/goroot-bootstrap; \ + "$GOROOT_BOOTSTRAP/bin/go" version; \ + \ + git init --quiet /usr/local/go; \ + git -C /usr/local/go fetch --depth 1 https://github.com/golang/go.git "$GOLANG_COMMIT:"; \ + git -C /usr/local/go checkout --quiet FETCH_HEAD; \ + \ +# save the Git timestamp so we can use it for reproducibility + SOURCE_DATE_EPOCH="$(git -C /usr/local/go log -1 --format='format:%ct' HEAD)"; \ + export SOURCE_DATE_EPOCH; \ + touchy="$(date -d "@$SOURCE_DATE_EPOCH" '+%Y%m%d%H%M.%S')"; \ +# for logging validation/edification + date --date "@$SOURCE_DATE_EPOCH" --rfc-2822; \ +# sanity check (detected value should be older than our wall clock) + [ "$SOURCE_DATE_EPOCH" -lt "$now" ]; \ + \ + ( \ + export \ + GOCACHE='/tmp/gocache' \ +# set GOHOST* to make sure explicitly 32bit builds on 64bit infra work correctly + GOHOSTOS="$GOOS" \ + GOHOSTARCH="$GOARCH" \ + ; \ + \ + cd /usr/local/go/src; \ + ./make.bash; \ + \ +# remove a few intermediate / bootstrapping files the official binary release tarballs do not contain (and ".git" that is hard to make reproducible) + rm -rf \ + /usr/local/go/.git* \ + /usr/local/go/pkg/*/cmd \ + /usr/local/go/pkg/bootstrap \ + /usr/local/go/pkg/obj \ + /usr/local/go/pkg/tool/*/api \ + /usr/local/go/pkg/tool/*/go_bootstrap \ + /usr/local/go/src/cmd/dist/dist \ + "$GOCACHE" \ + ; \ + \ +# clamp timestamps for reproducibility (allows "COPY --link" to be more clever/useful) + touch -t "$touchy" /usr/local/.go-date-stamp; \ + find /usr/local/go -depth -newer /usr/local/.go-date-stamp -exec touch -ht "$touchy" '{}' +; \ + rm /usr/local/.go-date-stamp; \ + ); \ + \ +# ideally at this point, we would just "COPY --link ... /usr/local/go/ /usr/local/go/" but BuildKit insists on creating the parent directories (perhaps related to https://github.com/opencontainers/image-spec/pull/970), and does so with unreproducible timestamps, so we instead create a whole new "directory tree" that we can "COPY --link" to accomplish what we want + mkdir /target /target/usr /target/usr/local; \ + mv -vT /usr/local/go /target/usr/local/go; \ + ln -svfT /target/usr/local/go /usr/local/go; \ + touch -t "$touchy" /target/usr/local /target/usr /target; \ + \ +# smoke test + go version; \ +# make sure our reproducibile timestamp is probably still correct (best-effort inline reproducibility test) + epoch="$(stat -c '%Y' /target/usr/local/go)"; \ + [ "$SOURCE_DATE_EPOCH" = "$epoch" ]; \ + find /target -newer /target/usr/local/go -exec sh -c 'ls -ld "$@" && exit "$#"' -- '{}' + + +FROM buildpack-deps:trixie-scm + +# install cgo-related dependencies +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + g++ \ + gcc \ + libc6-dev \ + make \ + pkg-config \ + ; \ +# go depends on "gold" explicitly on arm64 +# https://github.com/docker-library/golang/issues/570 (go depends on "gold" explicitly on arm64) +# https://github.com/golang/go/issues/22040 +# ... and as of trixie, "gold" is removed from the "binutils" package: +# > WARNING: gold is being removed from binutils, and is deprecated upstream. +# (and available as "binutils-gold" which is also a virtual on bookworm so we can reasonably be explicit everywhere) + dpkgArch="$(dpkg --print-architecture)"; \ + if [ "$dpkgArch" = 'arm64' ]; then \ + apt-get install -y --no-install-recommends binutils-gold; \ + fi; \ + rm -rf /var/lib/apt/lists/* + +# don't auto-upgrade the gotoolchain +# https://github.com/docker-library/golang/issues/472 +ENV GOTOOLCHAIN=local + +ENV GOPATH /go +ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH +# (see notes above about "COPY --link") +COPY --from=build --link /target/ / +RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 1777 "$GOPATH" +WORKDIR $GOPATH diff --git a/versions.json b/versions.json index 1436eb32..3106820d 100644 --- a/versions.json +++ b/versions.json @@ -1,10 +1,10 @@ { - "1.22": { - "version": "1.22.12", + "1.25": { + "version": "1.25.4", "arches": { "aix-ppc64": { - "url": "https://dl.google.com/go/go1.22.12.aix-ppc64.tar.gz", - "sha256": "391f318f62b46b15b7fd0e4ddfc7f6babd1d7da77eb142ca421982d2e63716e9", + "url": "https://dl.google.com/go/go1.25.4.aix-ppc64.tar.gz", + "sha256": "013b5da7d3bb174ded9fd6f57e098170d778d900b26b7b4a6acaefafc3df55d8", "env": { "GOOS": "aix", "GOARCH": "ppc64" @@ -12,8 +12,8 @@ "supported": false }, "amd64": { - "url": "https://dl.google.com/go/go1.22.12.linux-amd64.tar.gz", - "sha256": "4fa4f869b0f7fc6bb1eb2660e74657fbf04cdd290b5aef905585c86051b34d43", + "url": "https://dl.google.com/go/go1.25.4.linux-amd64.tar.gz", + "sha256": "9fa5ffeda4170de60f67f3aa0f824e426421ba724c21e133c1e35d6159ca1bec", "env": { "GOOS": "linux", "GOARCH": "amd64", @@ -30,8 +30,8 @@ "supported": false }, "arm32v6": { - "url": "https://dl.google.com/go/go1.22.12.linux-armv6l.tar.gz", - "sha256": "bcd678461bb74cda217fb5aa3cc914b2021be6d828f0c6fb4e3a36c3d7312acb", + "url": "https://dl.google.com/go/go1.25.4.linux-armv6l.tar.gz", + "sha256": "ff86a6406310d840edb170f539a51a7efac0ac2b2f84527b1b2bf5935fc4ab6d", "env": { "GOOS": "linux", "GOARCH": "arm", @@ -40,8 +40,8 @@ "supported": true }, "arm32v7": { - "url": "https://dl.google.com/go/go1.22.12.linux-armv6l.tar.gz", - "sha256": "bcd678461bb74cda217fb5aa3cc914b2021be6d828f0c6fb4e3a36c3d7312acb", + "url": "https://dl.google.com/go/go1.25.4.linux-armv6l.tar.gz", + "sha256": "ff86a6406310d840edb170f539a51a7efac0ac2b2f84527b1b2bf5935fc4ab6d", "env": { "GOOS": "linux", "GOARCH": "arm", @@ -50,17 +50,18 @@ "supported": true }, "arm64v8": { - "url": "https://dl.google.com/go/go1.22.12.linux-arm64.tar.gz", - "sha256": "fd017e647ec28525e86ae8203236e0653242722a7436929b1f775744e26278e7", + "url": "https://dl.google.com/go/go1.25.4.linux-arm64.tar.gz", + "sha256": "a68e86d4b72c2c2fecf7dfed667680b6c2a071221bbdb6913cf83ce3f80d9ff0", "env": { "GOOS": "linux", - "GOARCH": "arm64" + "GOARCH": "arm64", + "GOARM64": "v8.0" }, "supported": true }, "darwin-amd64": { - "url": "https://dl.google.com/go/go1.22.12.darwin-amd64.tar.gz", - "sha256": "e7bbe07e96f0bd3df04225090fe1e7852ed33af37c43a23e16edbbb3b90a5b7c", + "url": "https://dl.google.com/go/go1.25.4.darwin-amd64.tar.gz", + "sha256": "33ba03ff9973f5bd26d516eea35328832a9525ecc4d169b15937ffe2ce66a7d8", "env": { "GOOS": "darwin", "GOARCH": "amd64" @@ -68,8 +69,8 @@ "supported": false }, "darwin-arm64v8": { - "url": "https://dl.google.com/go/go1.22.12.darwin-arm64.tar.gz", - "sha256": "416c35218edb9d20990b5d8fc87be655d8b39926f15524ea35c66ee70273050d", + "url": "https://dl.google.com/go/go1.25.4.darwin-arm64.tar.gz", + "sha256": "c1b04e74251fe1dfbc5382e73d0c6d96f49642d8aebb7ee10a7ecd4cae36ebd2", "env": { "GOOS": "darwin", "GOARCH": "arm64" @@ -77,8 +78,8 @@ "supported": false }, "dragonfly-amd64": { - "url": "https://dl.google.com/go/go1.22.12.dragonfly-amd64.tar.gz", - "sha256": "2de0317cc660a61c0940c38f88f581368f0c8902816a70b6d4380c64ad78e659", + "url": "https://dl.google.com/go/go1.25.4.dragonfly-amd64.tar.gz", + "sha256": "046556da7cfa021a09d1c9e3f948a21da225863f58a19aac5b32bd18a6fa2f77", "env": { "GOOS": "dragonfly", "GOARCH": "amd64" @@ -86,26 +87,26 @@ "supported": false }, "freebsd-amd64": { - "url": "https://dl.google.com/go/go1.22.12.freebsd-amd64.tar.gz", - "sha256": "a8c77e76859db3e6f3322cbe11deea5faf779e374f45df7554d2cb484ffa492a", + "url": "https://dl.google.com/go/go1.25.4.freebsd-amd64.tar.gz", + "sha256": "6256dad7368f8b4d7ddbeb80ed98b3368a553df7b17dad18894f0637840f6d50", "env": { "GOOS": "freebsd", "GOARCH": "amd64" }, "supported": false }, - "freebsd-arm32v6": { - "url": "https://dl.google.com/go/go1.22.12.freebsd-arm.tar.gz", - "sha256": "dac691ce62ac6b9c78f45a0058d7656abedbe5665b3d49910cbd6ba12e20c2fb", + "freebsd-arm": { + "url": "https://dl.google.com/go/go1.25.4.freebsd-arm.tar.gz", + "sha256": "48c0aa810585b50e8d1e475b9466fb403eec3b5bdf06a8be6d634b7dde686bfa", "env": { "GOOS": "freebsd", - "GOARCH": "armv6l" + "GOARCH": "arm" }, "supported": false }, "freebsd-arm64v8": { - "url": "https://dl.google.com/go/go1.22.12.freebsd-arm64.tar.gz", - "sha256": "f56d3b2d26acd9e720f8be503d92bb7bb5d921462ff7c92463d0fa550507ed93", + "url": "https://dl.google.com/go/go1.25.4.freebsd-arm64.tar.gz", + "sha256": "d74cfa54a4a97737d238f35866d257638607417dfc60b647429e898ea7c9a7a4", "env": { "GOOS": "freebsd", "GOARCH": "arm64" @@ -113,8 +114,8 @@ "supported": false }, "freebsd-i386": { - "url": "https://dl.google.com/go/go1.22.12.freebsd-386.tar.gz", - "sha256": "85b00f8646e84be6ce51c753d22b68a5f4d5bbfc6a82c8ca9e7489c0c5a619d8", + "url": "https://dl.google.com/go/go1.25.4.freebsd-386.tar.gz", + "sha256": "2e2073fd74c2421bda91bd3900a6ffc1db4c97380ac8deb193731204f5b97b23", "env": { "GOOS": "freebsd", "GOARCH": "386" @@ -122,8 +123,8 @@ "supported": false }, "freebsd-riscv64": { - "url": "https://dl.google.com/go/go1.22.12.freebsd-riscv64.tar.gz", - "sha256": "d147c0c8faaffed65240f3b4fe5e44e573928827b9292fb873c9712d567fa986", + "url": "https://dl.google.com/go/go1.25.4.freebsd-riscv64.tar.gz", + "sha256": "c1bb0d2ae78415e6e78d71b0aede0e3bee3f220a220e6d0390c3219ba5604ca1", "env": { "GOOS": "freebsd", "GOARCH": "riscv64" @@ -131,8 +132,8 @@ "supported": false }, "i386": { - "url": "https://dl.google.com/go/go1.22.12.linux-386.tar.gz", - "sha256": "40d4c297bc2e964e9c96fe79bb323dce79b77b8b103fc7cc52e0a87c7849890f", + "url": "https://dl.google.com/go/go1.25.4.linux-386.tar.gz", + "sha256": "0cf5f721ab7c5e7a170dedb2b51d9b1fedfe6ef1b2c626bf7a47fb9a613c5d96", "env": { "GOOS": "linux", "GOARCH": "386", @@ -141,8 +142,8 @@ "supported": true }, "illumos-amd64": { - "url": "https://dl.google.com/go/go1.22.12.illumos-amd64.tar.gz", - "sha256": "e2c6493b7bf4f2bafbe3235645a1e96783ee936d197a8dd9a5b95ce7c5f5a0a6", + "url": "https://dl.google.com/go/go1.25.4.illumos-amd64.tar.gz", + "sha256": "3dcb72f967e924543c49bf20ac6d4057ff8c5b8f4120d7e021ba37a7e62aef77", "env": { "GOOS": "illumos", "GOARCH": "amd64" @@ -150,8 +151,8 @@ "supported": false }, "loong64": { - "url": "https://dl.google.com/go/go1.22.12.linux-loong64.tar.gz", - "sha256": "ef1644676782354369210ed6cd839ff872de886c38f287d29ac69377928edec1", + "url": "https://dl.google.com/go/go1.25.4.linux-loong64.tar.gz", + "sha256": "54b967c86b756609b3ee18ec8136ce9ee901270892b0fce01d0c78bec6a0c9b5", "env": { "GOOS": "linux", "GOARCH": "loong64" @@ -159,8 +160,8 @@ "supported": false }, "mips": { - "url": "https://dl.google.com/go/go1.22.12.linux-mips.tar.gz", - "sha256": "993c685dad0a59f9f15f76a2eb9146f741ef36d808f38985bc6748b38000746d", + "url": "https://dl.google.com/go/go1.25.4.linux-mips.tar.gz", + "sha256": "a59d20ae357e70a08e10359779b2927608f885f1b2593a76da0e3a9b60f8ae47", "env": { "GOOS": "linux", "GOARCH": "mips" @@ -168,8 +169,8 @@ "supported": false }, "mips64": { - "url": "https://dl.google.com/go/go1.22.12.linux-mips64.tar.gz", - "sha256": "d8aa3dea17e0175d6a57dfdf9b3b29a911ebe8c5ddbefd808eab61a842c00229", + "url": "https://dl.google.com/go/go1.25.4.linux-mips64.tar.gz", + "sha256": "8deca53dc406a556949c82c6aed4293330f9f36773732654a1439cbd744f3beb", "env": { "GOOS": "linux", "GOARCH": "mips64" @@ -177,8 +178,8 @@ "supported": false }, "mips64le": { - "url": "https://dl.google.com/go/go1.22.12.linux-mips64le.tar.gz", - "sha256": "2d473895f9c1dc8c86d51eb13f8ca49b7eea46010759fd71efed3eecacf5335b", + "url": "https://dl.google.com/go/go1.25.4.linux-mips64le.tar.gz", + "sha256": "7e6e914678e537de5e12158231e0dbf4e9fa8a427b4ba295128f76a88b4cfed9", "env": { "GOOS": "linux", "GOARCH": "mips64le" @@ -186,8 +187,8 @@ "supported": true }, "mipsle": { - "url": "https://dl.google.com/go/go1.22.12.linux-mipsle.tar.gz", - "sha256": "d4ba5f6215643a1d64dc159869663f71dd339598e99678e97e1c5300bb46d46d", + "url": "https://dl.google.com/go/go1.25.4.linux-mipsle.tar.gz", + "sha256": "e1858f934609ef1c8ee54d2788b46e867204b75c6fddd77274bf8424af2cb45a", "env": { "GOOS": "linux", "GOARCH": "mipsle" @@ -195,26 +196,26 @@ "supported": false }, "netbsd-amd64": { - "url": "https://dl.google.com/go/go1.22.12.netbsd-amd64.tar.gz", - "sha256": "777e65d0d660a2015723528bffe0e32e963c7fa0d9ef5c37717e0c854248f14c", + "url": "https://dl.google.com/go/go1.25.4.netbsd-amd64.tar.gz", + "sha256": "22d7f0a46aed0d1cd00f7e1789e5bb0b831b5bf20c094fc2e2cb635e93ba427f", "env": { "GOOS": "netbsd", "GOARCH": "amd64" }, "supported": false }, - "netbsd-arm32v6": { - "url": "https://dl.google.com/go/go1.22.12.netbsd-arm.tar.gz", - "sha256": "041bc989cb73cd4517555d49d06b9a703f96619a3da6004fc17f408315f81fc2", + "netbsd-arm": { + "url": "https://dl.google.com/go/go1.25.4.netbsd-arm.tar.gz", + "sha256": "6aea4c3ebbc4d662c8b08edc716c0fc31c93174979dd70f26b5eb8e42c687462", "env": { "GOOS": "netbsd", - "GOARCH": "armv6l" + "GOARCH": "arm" }, "supported": false }, "netbsd-arm64v8": { - "url": "https://dl.google.com/go/go1.22.12.netbsd-arm64.tar.gz", - "sha256": "6499cf91a0211c65f7e3b7a8d4da42ea17fe75731e3805cbbb91daf196752641", + "url": "https://dl.google.com/go/go1.25.4.netbsd-arm64.tar.gz", + "sha256": "25a07e88368be0b392e2c0e38a1b332f9322482d1cac802d7470888c0cb1bae2", "env": { "GOOS": "netbsd", "GOARCH": "arm64" @@ -222,8 +223,8 @@ "supported": false }, "netbsd-i386": { - "url": "https://dl.google.com/go/go1.22.12.netbsd-386.tar.gz", - "sha256": "e43201af6471e57c59e704a6c8285102e20b1f99066f4d9a480f14f9d0b9c72e", + "url": "https://dl.google.com/go/go1.25.4.netbsd-386.tar.gz", + "sha256": "7e2327a093b4a648180db8094316df90d21b1b42123fda66b01fa274d1d047db", "env": { "GOOS": "netbsd", "GOARCH": "386" @@ -231,26 +232,26 @@ "supported": false }, "openbsd-amd64": { - "url": "https://dl.google.com/go/go1.22.12.openbsd-amd64.tar.gz", - "sha256": "8f650cfb19da085f15d2ed6b389f878cdee7889ff1e601d4d197ebfe855478b9", + "url": "https://dl.google.com/go/go1.25.4.openbsd-amd64.tar.gz", + "sha256": "7a63182f1e5fbeaca5de73f71f3f8e7fbe6bf3c20260ab24543a543cd1b026f3", "env": { "GOOS": "openbsd", "GOARCH": "amd64" }, "supported": false }, - "openbsd-arm32v6": { - "url": "https://dl.google.com/go/go1.22.12.openbsd-arm.tar.gz", - "sha256": "e65c34ce8a1c5caa8de183f2c7c987e47c5a2a51b2c87e3c0ad5166a8235f41d", + "openbsd-arm": { + "url": "https://dl.google.com/go/go1.25.4.openbsd-arm.tar.gz", + "sha256": "a4845622453997f761bcabad337afe0febc421b8c04b58414bf8b352d2acbdae", "env": { "GOOS": "openbsd", - "GOARCH": "armv6l" + "GOARCH": "arm" }, "supported": false }, "openbsd-arm64v8": { - "url": "https://dl.google.com/go/go1.22.12.openbsd-arm64.tar.gz", - "sha256": "9ecc79a531c7a10ca2d43480fa3ea6f5b48ab4dd77bef3ec02344899756ccac9", + "url": "https://dl.google.com/go/go1.25.4.openbsd-arm64.tar.gz", + "sha256": "4665a3c19c3f8120ed4fbaebad690969683b6a8e646017f341786016faabc0b9", "env": { "GOOS": "openbsd", "GOARCH": "arm64" @@ -258,8 +259,8 @@ "supported": false }, "openbsd-i386": { - "url": "https://dl.google.com/go/go1.22.12.openbsd-386.tar.gz", - "sha256": "537f4e4ec01e4fdcbae7f46d8f0ad03eb0588f7c79f2127048ba87fe697f336c", + "url": "https://dl.google.com/go/go1.25.4.openbsd-386.tar.gz", + "sha256": "fed31e86ba4fda76391427d48a33fcf5f020bf24d6537b0fc3a06640146f6a18", "env": { "GOOS": "openbsd", "GOARCH": "386" @@ -267,35 +268,44 @@ "supported": false }, "openbsd-ppc64": { - "url": "https://dl.google.com/go/go1.22.12.openbsd-ppc64.tar.gz", - "sha256": "fb087d00c65f0e274f92764dd901a768768cb4df2eb32a723f9520acb7866380", + "url": "https://dl.google.com/go/go1.25.4.openbsd-ppc64.tar.gz", + "sha256": "e8c022a4cbf8ad29b06498cca9ee278878f9beb2353f7fc1a2622cb07ef76dd5", "env": { "GOOS": "openbsd", "GOARCH": "ppc64" }, "supported": false }, + "openbsd-riscv64": { + "url": "https://dl.google.com/go/go1.25.4.openbsd-riscv64.tar.gz", + "sha256": "544831b3306861f824a608ffa539c39a066cd93d9628b8a53dc9f06966395684", + "env": { + "GOOS": "openbsd", + "GOARCH": "riscv64" + }, + "supported": false + }, "plan9-amd64": { - "url": "https://dl.google.com/go/go1.22.12.plan9-amd64.tar.gz", - "sha256": "fe4b01ca4712d99e89871acb399c2b5efeaf2b27380747c99628d7f7901ae437", + "url": "https://dl.google.com/go/go1.25.4.plan9-amd64.tar.gz", + "sha256": "8721a367802a170e62d991643f46645909a3b7a9567ae94b51d406a8b10cac6a", "env": { "GOOS": "plan9", "GOARCH": "amd64" }, "supported": false }, - "plan9-arm32v6": { - "url": "https://dl.google.com/go/go1.22.12.plan9-arm.tar.gz", - "sha256": "91e8ad7f32007e88d042b234875fe8c02c3d39dd534bc934a60562dfd026311f", + "plan9-arm": { + "url": "https://dl.google.com/go/go1.25.4.plan9-arm.tar.gz", + "sha256": "a290aefedc0868717ecfeda1cfa6e4e2a075a2dee039efc0ec6b8d1f63f26b82", "env": { "GOOS": "plan9", - "GOARCH": "armv6l" + "GOARCH": "arm" }, "supported": false }, "plan9-i386": { - "url": "https://dl.google.com/go/go1.22.12.plan9-386.tar.gz", - "sha256": "ae20ddcd801950ddc1b7169bbc0d7bc374aa11185ccb5b92b08d82ed38da0576", + "url": "https://dl.google.com/go/go1.25.4.plan9-386.tar.gz", + "sha256": "617e2ca6061178363abecef20e859337c91a8409201e6845e4f4ec3c1a094079", "env": { "GOOS": "plan9", "GOARCH": "386" @@ -303,8 +313,8 @@ "supported": false }, "ppc64": { - "url": "https://dl.google.com/go/go1.22.12.linux-ppc64.tar.gz", - "sha256": "ab0b6dc2aa1096f256224398d4a34eac5257289146cdc2f3a62b9fc17709a3c5", + "url": "https://dl.google.com/go/go1.25.4.linux-ppc64.tar.gz", + "sha256": "3c5c07ffa4bb0ee415178346f55a0fd33559880801ced56fb1da5ef0eca86ab8", "env": { "GOOS": "linux", "GOARCH": "ppc64" @@ -312,8 +322,8 @@ "supported": false }, "ppc64le": { - "url": "https://dl.google.com/go/go1.22.12.linux-ppc64le.tar.gz", - "sha256": "9573d30003b0796717a99d9e2e96c48fddd4fc0f29d840f212c503b03d7de112", + "url": "https://dl.google.com/go/go1.25.4.linux-ppc64le.tar.gz", + "sha256": "38c8ac8463537c99fbc1ef368f243b626144446c09db71b1d20634a4237c966d", "env": { "GOOS": "linux", "GOARCH": "ppc64le" @@ -321,17 +331,18 @@ "supported": true }, "riscv64": { - "url": "https://dl.google.com/go/go1.22.12.linux-riscv64.tar.gz", - "sha256": "f03a084aabc812fdc15b29acd5e1ee18e13b3c80be22aec43990119afcaf4947", + "url": "https://dl.google.com/go/go1.25.4.linux-riscv64.tar.gz", + "sha256": "0a00a0eba831b5fe511e852909b99b83992ea09e81fdfbd9f805e5a4b646f803", "env": { "GOOS": "linux", - "GOARCH": "riscv64" + "GOARCH": "riscv64", + "GORISCV64": "rva20u64" }, "supported": true }, "s390x": { - "url": "https://dl.google.com/go/go1.22.12.linux-s390x.tar.gz", - "sha256": "e1b20935cc790fdc4c48c0e3e6dd11be57ac09e4eb302ba2cdf146276468b346", + "url": "https://dl.google.com/go/go1.25.4.linux-s390x.tar.gz", + "sha256": "2482e7b3b924348b120b6d7d7c13035905c009c2a3ecc0c8dc56bf0fd3184a58", "env": { "GOOS": "linux", "GOARCH": "s390x" @@ -339,8 +350,8 @@ "supported": true }, "solaris-amd64": { - "url": "https://dl.google.com/go/go1.22.12.solaris-amd64.tar.gz", - "sha256": "852f9e617beb42397514fb1585382c456793877462ef95545609541ee2acb24b", + "url": "https://dl.google.com/go/go1.25.4.solaris-amd64.tar.gz", + "sha256": "a5640bdf4cd807b90d9b2695f60fd36db6978ea965f892c905ee1f579bf68ce1", "env": { "GOOS": "solaris", "GOARCH": "amd64" @@ -348,31 +359,22 @@ "supported": false }, "src": { - "url": "https://dl.google.com/go/go1.22.12.src.tar.gz", - "sha256": "012a7e1f37f362c0918c1dfa3334458ac2da1628c4b9cf4d9ca02db986e17d71", - "supported": true + "url": "https://dl.google.com/go/go1.25.4.src.tar.gz", + "sha256": "160043b7f17b6d60b50369436917fda8d5034640ba39ae2431c6b95a889cc98c", + "supported": false }, "windows-amd64": { - "url": "https://dl.google.com/go/go1.22.12.windows-amd64.zip", - "sha256": "2ceda04074eac51f4b0b85a9fcca38bcd49daee24bed9ea1f29958a8e22673a6", + "url": "https://dl.google.com/go/go1.25.4.windows-amd64.zip", + "sha256": "6dad204d42719795f22067553b2b042c0e710b32c5a00f6c67892865167fdfd0", "env": { "GOOS": "windows", "GOARCH": "amd64" }, "supported": true }, - "windows-arm32v6": { - "url": "https://dl.google.com/go/go1.22.12.windows-arm.zip", - "sha256": "50c34f9057e2f8c0a6aec83f326fcaad6b43d517876589c6e325ee014d148fd7", - "env": { - "GOOS": "windows", - "GOARCH": "armv6l" - }, - "supported": false - }, "windows-arm64v8": { - "url": "https://dl.google.com/go/go1.22.12.windows-arm64.zip", - "sha256": "6b9eaf160b155e02ffe9ed603f162ecc3264f6130c8fcf83bb77087f9807fdec", + "url": "https://dl.google.com/go/go1.25.4.windows-arm64.zip", + "sha256": "138aa10a6808b4cff8657478be14772a05335bc8d7e51955e7a6d9ac335af3e4", "env": { "GOOS": "windows", "GOARCH": "arm64" @@ -380,8 +382,8 @@ "supported": false }, "windows-i386": { - "url": "https://dl.google.com/go/go1.22.12.windows-386.zip", - "sha256": "9ab2e2f8bede9be98d63457f0a65d62387baa8b3f9e11af3e9a0a9eef2abf435", + "url": "https://dl.google.com/go/go1.25.4.windows-386.zip", + "sha256": "f21fe4990449799a571971fd5efdc38b911667c628c949cbdfb77326cf877606", "env": { "GOOS": "windows", "GOARCH": "386" @@ -390,24 +392,22 @@ } }, "variants": [ + "trixie", "bookworm", - "bullseye", + "alpine3.22", "alpine3.21", - "alpine3.20", "windows/windowsservercore-ltsc2025", "windows/windowsservercore-ltsc2022", - "windows/windowsservercore-1809", "windows/nanoserver-ltsc2025", - "windows/nanoserver-ltsc2022", - "windows/nanoserver-1809" + "windows/nanoserver-ltsc2022" ] }, - "1.23": { - "version": "1.23.6", + "1.24": { + "version": "1.24.10", "arches": { "aix-ppc64": { - "url": "https://dl.google.com/go/go1.23.6.aix-ppc64.tar.gz", - "sha256": "adec10f4ba56591f523aa04851f7f6900b1c61508dfa6b80e62717a8e6684a5c", + "url": "https://dl.google.com/go/go1.24.10.aix-ppc64.tar.gz", + "sha256": "5b6e2562d73ad41e13800db9aaeece5cd4ad178a3425ed27a743fa3b4a5df9b9", "env": { "GOOS": "aix", "GOARCH": "ppc64" @@ -415,8 +415,8 @@ "supported": false }, "amd64": { - "url": "https://dl.google.com/go/go1.23.6.linux-amd64.tar.gz", - "sha256": "9379441ea310de000f33a4dc767bd966e72ab2826270e038e78b2c53c2e7802d", + "url": "https://dl.google.com/go/go1.24.10.linux-amd64.tar.gz", + "sha256": "dd52b974e3d9c5a7bbfb222c685806def6be5d6f7efd10f9caa9ca1fa2f47955", "env": { "GOOS": "linux", "GOARCH": "amd64", @@ -433,8 +433,8 @@ "supported": false }, "arm32v6": { - "url": "https://dl.google.com/go/go1.23.6.linux-armv6l.tar.gz", - "sha256": "27a4611010c16b8c4f37ade3aada55bd5781998f02f348b164302fd5eea4eb74", + "url": "https://dl.google.com/go/go1.24.10.linux-armv6l.tar.gz", + "sha256": "2e28837ccde684693edced2df01998723c7e9207890d84a6a05c3f511e6b7ccb", "env": { "GOOS": "linux", "GOARCH": "arm", @@ -443,8 +443,8 @@ "supported": true }, "arm32v7": { - "url": "https://dl.google.com/go/go1.23.6.linux-armv6l.tar.gz", - "sha256": "27a4611010c16b8c4f37ade3aada55bd5781998f02f348b164302fd5eea4eb74", + "url": "https://dl.google.com/go/go1.24.10.linux-armv6l.tar.gz", + "sha256": "2e28837ccde684693edced2df01998723c7e9207890d84a6a05c3f511e6b7ccb", "env": { "GOOS": "linux", "GOARCH": "arm", @@ -453,8 +453,8 @@ "supported": true }, "arm64v8": { - "url": "https://dl.google.com/go/go1.23.6.linux-arm64.tar.gz", - "sha256": "561c780e8f4a8955d32bf72e46af0b5ee5e0debe1e4633df9a03781878219202", + "url": "https://dl.google.com/go/go1.24.10.linux-arm64.tar.gz", + "sha256": "94a99dae43dab8a3fe337485bbb89214b524285ec53ea02040514b0c2a9c3f94", "env": { "GOOS": "linux", "GOARCH": "arm64", @@ -463,8 +463,8 @@ "supported": true }, "darwin-amd64": { - "url": "https://dl.google.com/go/go1.23.6.darwin-amd64.tar.gz", - "sha256": "782da50ce8ec5e98fac2cd3cdc6a1d7130d093294fc310038f651444232a3fb0", + "url": "https://dl.google.com/go/go1.24.10.darwin-amd64.tar.gz", + "sha256": "fde05d84f7f64c8d01564f299ea1897fe94457d20d8d9054200ac1f8ae1c2bc3", "env": { "GOOS": "darwin", "GOARCH": "amd64" @@ -472,8 +472,8 @@ "supported": false }, "darwin-arm64v8": { - "url": "https://dl.google.com/go/go1.23.6.darwin-arm64.tar.gz", - "sha256": "5cae2450a1708aeb0333237a155640d5562abaf195defebc4306054565536221", + "url": "https://dl.google.com/go/go1.24.10.darwin-arm64.tar.gz", + "sha256": "71c70841bcdadf4b5d2f7c0f099952907969f25235663622a47d6f2233ad39aa", "env": { "GOOS": "darwin", "GOARCH": "arm64" @@ -481,8 +481,8 @@ "supported": false }, "dragonfly-amd64": { - "url": "https://dl.google.com/go/go1.23.6.dragonfly-amd64.tar.gz", - "sha256": "d52efb3020d9332477ade98163c03d2f2fe3e051b0e7e01f0e167412c66de0cb", + "url": "https://dl.google.com/go/go1.24.10.dragonfly-amd64.tar.gz", + "sha256": "2dcb945027b49a26b184e8af25dbb0044e1e91f6377f340dc9bb22ae3ffc5984", "env": { "GOOS": "dragonfly", "GOARCH": "amd64" @@ -490,8 +490,8 @@ "supported": false }, "freebsd-amd64": { - "url": "https://dl.google.com/go/go1.23.6.freebsd-amd64.tar.gz", - "sha256": "ebb4c6a9b0673dbdabc439877779ed6add16575e21bd0a7955c33f692789aef6", + "url": "https://dl.google.com/go/go1.24.10.freebsd-amd64.tar.gz", + "sha256": "cb917b64aa4a407ed3310b397cc4dca10f0a3e2b0dd184ed74164ceaeab2625e", "env": { "GOOS": "freebsd", "GOARCH": "amd64" @@ -499,8 +499,8 @@ "supported": false }, "freebsd-arm": { - "url": "https://dl.google.com/go/go1.23.6.freebsd-arm.tar.gz", - "sha256": "b7241584afb0b161c09148f8fde16171bb743e47b99d451fbc5f5217ec7a88b6", + "url": "https://dl.google.com/go/go1.24.10.freebsd-arm.tar.gz", + "sha256": "5fc68ea9c1a0d55a6dc06f3f633d83efb89828dabf10b659627f4bc7b3973add", "env": { "GOOS": "freebsd", "GOARCH": "arm" @@ -508,8 +508,8 @@ "supported": false }, "freebsd-arm64v8": { - "url": "https://dl.google.com/go/go1.23.6.freebsd-arm64.tar.gz", - "sha256": "004718b53cedd7955d1b1dc4053539fcd1053c031f5f3374334a22befd1f8310", + "url": "https://dl.google.com/go/go1.24.10.freebsd-arm64.tar.gz", + "sha256": "b2a8227dae5b26a2539fc7607e81b38ed80e69c7a65d50879a7573413c9cb81f", "env": { "GOOS": "freebsd", "GOARCH": "arm64" @@ -517,8 +517,8 @@ "supported": false }, "freebsd-i386": { - "url": "https://dl.google.com/go/go1.23.6.freebsd-386.tar.gz", - "sha256": "d3287706b5823712ac6cf7dff684a556cff98163ef60e7b275abe3388c17aac7", + "url": "https://dl.google.com/go/go1.24.10.freebsd-386.tar.gz", + "sha256": "2504375931b4e9d84be768773efedad74a05c6b340e254f288f31ccc4bb55365", "env": { "GOOS": "freebsd", "GOARCH": "386" @@ -526,8 +526,8 @@ "supported": false }, "freebsd-riscv64": { - "url": "https://dl.google.com/go/go1.23.6.freebsd-riscv64.tar.gz", - "sha256": "ca026ec8a30dd0c18164f40e1ce21bd725e2445f11699177d05815189a38de7a", + "url": "https://dl.google.com/go/go1.24.10.freebsd-riscv64.tar.gz", + "sha256": "7dfd58c9c3de8c38d71c8794a6e0a0fbe9caa0b5f5f865db1e57ef395ea47ccd", "env": { "GOOS": "freebsd", "GOARCH": "riscv64" @@ -535,8 +535,8 @@ "supported": false }, "i386": { - "url": "https://dl.google.com/go/go1.23.6.linux-386.tar.gz", - "sha256": "e61f87693169c0bbcc43363128f1e929b9dff0b7f448573f1bdd4e4a0b9687ba", + "url": "https://dl.google.com/go/go1.24.10.linux-386.tar.gz", + "sha256": "e43078e9ef6a63d7378839030f92d655644ab22337e3afa75bbb094375a7ae8f", "env": { "GOOS": "linux", "GOARCH": "386", @@ -545,8 +545,8 @@ "supported": true }, "illumos-amd64": { - "url": "https://dl.google.com/go/go1.23.6.illumos-amd64.tar.gz", - "sha256": "7db973efa3fb2e48e45059b855721550fce8e90803e7373d3efd37b88dd821e8", + "url": "https://dl.google.com/go/go1.24.10.illumos-amd64.tar.gz", + "sha256": "52e420fbdc4a47e9e3dfcfb51f3d59348543cd7c838b891878b4ae98b728e0ab", "env": { "GOOS": "illumos", "GOARCH": "amd64" @@ -554,8 +554,8 @@ "supported": false }, "loong64": { - "url": "https://dl.google.com/go/go1.23.6.linux-loong64.tar.gz", - "sha256": "c459226424372abc2b35957cc8955dad348330714f7605093325dbb73e33c750", + "url": "https://dl.google.com/go/go1.24.10.linux-loong64.tar.gz", + "sha256": "7f28e53b594db35815dac947c695ffb485844bb2c204ba64786f5b8a1c20ea9e", "env": { "GOOS": "linux", "GOARCH": "loong64" @@ -563,8 +563,8 @@ "supported": false }, "mips": { - "url": "https://dl.google.com/go/go1.23.6.linux-mips.tar.gz", - "sha256": "e2a0aff70b958a3463a7d47132a2d0238369f64578d4f7f95e679e3a5af05622", + "url": "https://dl.google.com/go/go1.24.10.linux-mips.tar.gz", + "sha256": "4c137f395adcf97ee5dec5e205ffcd4ea608e46fb79d8cbb9b832f50e102927a", "env": { "GOOS": "linux", "GOARCH": "mips" @@ -572,8 +572,8 @@ "supported": false }, "mips64": { - "url": "https://dl.google.com/go/go1.23.6.linux-mips64.tar.gz", - "sha256": "7d30ec7db056311d420bf930c16abcae13c0f41c26a202868f279721ec3c2f2f", + "url": "https://dl.google.com/go/go1.24.10.linux-mips64.tar.gz", + "sha256": "5e6f6ec8b76b5f34114325944d868e7fdc9d550879c6ed94ad7389631adcec67", "env": { "GOOS": "linux", "GOARCH": "mips64" @@ -581,8 +581,8 @@ "supported": false }, "mips64le": { - "url": "https://dl.google.com/go/go1.23.6.linux-mips64le.tar.gz", - "sha256": "74ca7bc475bcc084c6718b74df024d7de9612932cea8a6dc75e29d3a5315a23a", + "url": "https://dl.google.com/go/go1.24.10.linux-mips64le.tar.gz", + "sha256": "99c24fb4a175eab370a964d6240a9e4db00e3977fd85bef54080a175f501074c", "env": { "GOOS": "linux", "GOARCH": "mips64le" @@ -590,8 +590,8 @@ "supported": true }, "mipsle": { - "url": "https://dl.google.com/go/go1.23.6.linux-mipsle.tar.gz", - "sha256": "09bf935a14e9f59a20499989438b1655453480016bdbcb10406acf4df2678ccb", + "url": "https://dl.google.com/go/go1.24.10.linux-mipsle.tar.gz", + "sha256": "21aec384417052c2ccba8ed771b71e84ad4cb09f04a1416b9909b93b7bd8a670", "env": { "GOOS": "linux", "GOARCH": "mipsle" @@ -599,8 +599,8 @@ "supported": false }, "netbsd-amd64": { - "url": "https://dl.google.com/go/go1.23.6.netbsd-amd64.tar.gz", - "sha256": "86ba51e7bb26b30ea6a8d88ddb79d8e8c83b4116200040ecb7a5a44cf90a8c5c", + "url": "https://dl.google.com/go/go1.24.10.netbsd-amd64.tar.gz", + "sha256": "0bbed26b67fd69f3b6be1480b75515feb9602b7b1df9df2ac436af5b4abf8c23", "env": { "GOOS": "netbsd", "GOARCH": "amd64" @@ -608,8 +608,8 @@ "supported": false }, "netbsd-arm": { - "url": "https://dl.google.com/go/go1.23.6.netbsd-arm.tar.gz", - "sha256": "4b974c35345100f0be6ea66afab2781de91ee9882117314126eaf0ae90fd3816", + "url": "https://dl.google.com/go/go1.24.10.netbsd-arm.tar.gz", + "sha256": "4f0c01ae6a2f59b966eebbf8cd64a9a515d2ea8b588868f93e1a94386e1807de", "env": { "GOOS": "netbsd", "GOARCH": "arm" @@ -617,8 +617,8 @@ "supported": false }, "netbsd-arm64v8": { - "url": "https://dl.google.com/go/go1.23.6.netbsd-arm64.tar.gz", - "sha256": "53e3589fc38e787a493ea038961f8e40803714dbb42754c1713b00099c12e9b9", + "url": "https://dl.google.com/go/go1.24.10.netbsd-arm64.tar.gz", + "sha256": "49a6db2becf61028275b2a33a827fd16ee903b5804493372f825dd7117b445ed", "env": { "GOOS": "netbsd", "GOARCH": "arm64" @@ -626,8 +626,8 @@ "supported": false }, "netbsd-i386": { - "url": "https://dl.google.com/go/go1.23.6.netbsd-386.tar.gz", - "sha256": "92d678fb8e1eeeb8c6af6f22e4e5494652dcbb4a320113fc08325cb9956a2d4c", + "url": "https://dl.google.com/go/go1.24.10.netbsd-386.tar.gz", + "sha256": "890b76b011aff75630d29c4cce7bb2b99f522b2404515aca04eec6910270cdfd", "env": { "GOOS": "netbsd", "GOARCH": "386" @@ -635,8 +635,8 @@ "supported": false }, "openbsd-amd64": { - "url": "https://dl.google.com/go/go1.23.6.openbsd-amd64.tar.gz", - "sha256": "f699e707d95a984fcc00361d91aecdb413d3c75e18235156ffba7a89edf68aae", + "url": "https://dl.google.com/go/go1.24.10.openbsd-amd64.tar.gz", + "sha256": "a0fb11b56598c8f48c53f6fc93d91ab75fdd4381dab3f23a5d3b095cc571cd69", "env": { "GOOS": "openbsd", "GOARCH": "amd64" @@ -644,8 +644,8 @@ "supported": false }, "openbsd-arm": { - "url": "https://dl.google.com/go/go1.23.6.openbsd-arm.tar.gz", - "sha256": "3c1cf6ab893657d0bf1942e40ce115acfd27cbce1ccb9bc88fd9cd21ca3d489f", + "url": "https://dl.google.com/go/go1.24.10.openbsd-arm.tar.gz", + "sha256": "47a2c5ebacf125c9cfe29ada33a1c6b07d65c906b2427e457abdb162e927186a", "env": { "GOOS": "openbsd", "GOARCH": "arm" @@ -653,8 +653,8 @@ "supported": false }, "openbsd-arm64v8": { - "url": "https://dl.google.com/go/go1.23.6.openbsd-arm64.tar.gz", - "sha256": "cc0875535d14001f2da23ae9af89025b28c466e8f4f4c63f991ebb6f4b02f66c", + "url": "https://dl.google.com/go/go1.24.10.openbsd-arm64.tar.gz", + "sha256": "4d375420060e9b8f55c14d0304703089c9524da6f201b3050975a05c20394222", "env": { "GOOS": "openbsd", "GOARCH": "arm64" @@ -662,8 +662,8 @@ "supported": false }, "openbsd-i386": { - "url": "https://dl.google.com/go/go1.23.6.openbsd-386.tar.gz", - "sha256": "6d2317b3a8505ccebff8f72d943f2ac9b82c115632e54a53a786eff24ced56d9", + "url": "https://dl.google.com/go/go1.24.10.openbsd-386.tar.gz", + "sha256": "94a2ebd6e4da2052b0e700f3e48ec0dcea43993d7fb2a09a047c23e49392084d", "env": { "GOOS": "openbsd", "GOARCH": "386" @@ -671,8 +671,8 @@ "supported": false }, "openbsd-ppc64": { - "url": "https://dl.google.com/go/go1.23.6.openbsd-ppc64.tar.gz", - "sha256": "64de80e29ca66cb566cbf8be030bf8599953af4e48402eab724cbe0a08b40602", + "url": "https://dl.google.com/go/go1.24.10.openbsd-ppc64.tar.gz", + "sha256": "b3e4bd20d82c566b66a662cbfdff61bd48ec820419ce5ad7da7daff8b9d64fb9", "env": { "GOOS": "openbsd", "GOARCH": "ppc64" @@ -680,8 +680,8 @@ "supported": false }, "openbsd-riscv64": { - "url": "https://dl.google.com/go/go1.23.6.openbsd-riscv64.tar.gz", - "sha256": "c398a6b43c569f34bb4a2d16b52f8010eaac9a2a82ecac0602b4338e35cef377", + "url": "https://dl.google.com/go/go1.24.10.openbsd-riscv64.tar.gz", + "sha256": "344550e685b3e6f6dd60212db1b687b872262a5a979136d2af2f973b39b89b49", "env": { "GOOS": "openbsd", "GOARCH": "riscv64" @@ -689,8 +689,8 @@ "supported": false }, "plan9-amd64": { - "url": "https://dl.google.com/go/go1.23.6.plan9-amd64.tar.gz", - "sha256": "9fbe8065436d8d12c02f19f64f51c9107da3a7a4ac46ab5777e182e9fe88c32f", + "url": "https://dl.google.com/go/go1.24.10.plan9-amd64.tar.gz", + "sha256": "6a7cb86914cc7cf95b31f0316c64aa10b5c28029c6605ec91b11403d4edb178c", "env": { "GOOS": "plan9", "GOARCH": "amd64" @@ -698,8 +698,8 @@ "supported": false }, "plan9-arm": { - "url": "https://dl.google.com/go/go1.23.6.plan9-arm.tar.gz", - "sha256": "8e3c826b884daee2de37e3b070d7eac4cea5d68edab8db09910e22201c75db83", + "url": "https://dl.google.com/go/go1.24.10.plan9-arm.tar.gz", + "sha256": "55d169ab4f55c8f1b28d74c5d6a55559d683ae918864d392e611310f512e3b0d", "env": { "GOOS": "plan9", "GOARCH": "arm" @@ -707,8 +707,8 @@ "supported": false }, "plan9-i386": { - "url": "https://dl.google.com/go/go1.23.6.plan9-386.tar.gz", - "sha256": "10998b6b130bb7b542b407f0db42b86a913b111f8fa86d44394beaace4d45f01", + "url": "https://dl.google.com/go/go1.24.10.plan9-386.tar.gz", + "sha256": "2c1b778eb552e6bfee8b41068c2bf708c62c35af80c1ba464e55fdc27cce371c", "env": { "GOOS": "plan9", "GOARCH": "386" @@ -716,8 +716,8 @@ "supported": false }, "ppc64": { - "url": "https://dl.google.com/go/go1.23.6.linux-ppc64.tar.gz", - "sha256": "5cb2f6a5090276c72c5eda8a55896f5a3d6ea0f28d10fa1a50e8318640f02d6c", + "url": "https://dl.google.com/go/go1.24.10.linux-ppc64.tar.gz", + "sha256": "42489aacf3fc35ebb0e591f4ff83f6a5f00f560c91ba7e64daeb739f5e520751", "env": { "GOOS": "linux", "GOARCH": "ppc64" @@ -725,8 +725,8 @@ "supported": false }, "ppc64le": { - "url": "https://dl.google.com/go/go1.23.6.linux-ppc64le.tar.gz", - "sha256": "0f817201e83d78ddbfa27f5f78d9b72450b92cc21d5e045145efacd0d3244a99", + "url": "https://dl.google.com/go/go1.24.10.linux-ppc64le.tar.gz", + "sha256": "828343856535642e0b63f83109a2cca7e615e45c1b9a629ae86d85fc28041a6c", "env": { "GOOS": "linux", "GOARCH": "ppc64le" @@ -734,8 +734,8 @@ "supported": true }, "riscv64": { - "url": "https://dl.google.com/go/go1.23.6.linux-riscv64.tar.gz", - "sha256": "f95f7f817ab22ecab4503d0704d6449ea1aa26a595f57bf9b9f94ddf2aa7c1f3", + "url": "https://dl.google.com/go/go1.24.10.linux-riscv64.tar.gz", + "sha256": "0172a4aec1f7530df01863f3122273c6b7f7d63c7a7cbcbe3ec931be850bba15", "env": { "GOOS": "linux", "GOARCH": "riscv64", @@ -744,8 +744,8 @@ "supported": true }, "s390x": { - "url": "https://dl.google.com/go/go1.23.6.linux-s390x.tar.gz", - "sha256": "321e7ed0d5416f731479c52fa7610b52b8079a8061967bd48cec6d66f671a60e", + "url": "https://dl.google.com/go/go1.24.10.linux-s390x.tar.gz", + "sha256": "54efd5c71c6b3161d927ec5ef1fb5a089fb1c43cff15c244d5759eb4c1814597", "env": { "GOOS": "linux", "GOARCH": "s390x" @@ -753,8 +753,8 @@ "supported": true }, "solaris-amd64": { - "url": "https://dl.google.com/go/go1.23.6.solaris-amd64.tar.gz", - "sha256": "b619eff63fec86daaea92ca170559e448a58b8ba0b92eef1971bc14e92ea86a7", + "url": "https://dl.google.com/go/go1.24.10.solaris-amd64.tar.gz", + "sha256": "dfa44555b1e507489f393c8f02b15c97187be37e109ab1a296522d97fa788cab", "env": { "GOOS": "solaris", "GOARCH": "amd64" @@ -762,31 +762,22 @@ "supported": false }, "src": { - "url": "https://dl.google.com/go/go1.23.6.src.tar.gz", - "sha256": "039c5b04e65279daceee8a6f71e70bd05cf5b801782b6f77c6e19e2ed0511222", - "supported": true + "url": "https://dl.google.com/go/go1.24.10.src.tar.gz", + "sha256": "34000dcc47a517b78fcf2657ee7d033328a57079fe60c4ed8b7b84260d1d19d3", + "supported": false }, "windows-amd64": { - "url": "https://dl.google.com/go/go1.23.6.windows-amd64.zip", - "sha256": "53fec1586850b2cf5ad6438341ff7adc5f6700dd3ec1cfa3f5e8b141df190243", + "url": "https://dl.google.com/go/go1.24.10.windows-amd64.zip", + "sha256": "2444fb53637facb37c06faa85d64c38c6cd23d22407f205edb68c7ddb8fbe0d4", "env": { "GOOS": "windows", "GOARCH": "amd64" }, "supported": true }, - "windows-arm": { - "url": "https://dl.google.com/go/go1.23.6.windows-arm.zip", - "sha256": "22c2518c45c20018afa20d5376dc9fd7a7e74367240ed7b5209e79a30b5c4218", - "env": { - "GOOS": "windows", - "GOARCH": "arm" - }, - "supported": false - }, "windows-arm64v8": { - "url": "https://dl.google.com/go/go1.23.6.windows-arm64.zip", - "sha256": "a2d2ec1b3759552bdd9cdf58858f91dfbfd6ab3a472f00b5255acbed30b1aa41", + "url": "https://dl.google.com/go/go1.24.10.windows-arm64.zip", + "sha256": "2f3fad22a05ebee2d8cfeddbda35a1821a3c6d1fab102cd9443963e0f6a46486", "env": { "GOOS": "windows", "GOARCH": "arm64" @@ -794,8 +785,8 @@ "supported": false }, "windows-i386": { - "url": "https://dl.google.com/go/go1.23.6.windows-386.zip", - "sha256": "96820c0f5d464dd694543329e9b4d413b17c821c03a055717a29e6735b44c2d8", + "url": "https://dl.google.com/go/go1.24.10.windows-386.zip", + "sha256": "0b5b4e479d4c340e44c5064046cd641a36cff9e8c28f083a7e506d5dc4fc95d9", "env": { "GOOS": "windows", "GOARCH": "386" @@ -804,33 +795,23 @@ } }, "variants": [ + "trixie", "bookworm", - "bullseye", + "alpine3.22", "alpine3.21", - "alpine3.20", "windows/windowsservercore-ltsc2025", "windows/windowsservercore-ltsc2022", - "windows/windowsservercore-1809", "windows/nanoserver-ltsc2025", - "windows/nanoserver-ltsc2022", - "windows/nanoserver-1809" + "windows/nanoserver-ltsc2022" ] }, - "1.24-rc": { - "version": "1.24rc3", + "tip": { + "version": "tip-20251108", + "commit": { + "version": "e8ed85d6c22d9530523315c3048ed0455d205bff" + }, "arches": { - "aix-ppc64": { - "url": "https://dl.google.com/go/go1.24rc3.aix-ppc64.tar.gz", - "sha256": "609571927c053f1cf525aacad41025a0d6984e9f7258dd7b1ab51477b146f302", - "env": { - "GOOS": "aix", - "GOARCH": "ppc64" - }, - "supported": false - }, "amd64": { - "url": "https://dl.google.com/go/go1.24rc3.linux-amd64.tar.gz", - "sha256": "9eb3d64e392531781574e65880575c62633436c56f86d88a8dc15bacd546798e", "env": { "GOOS": "linux", "GOARCH": "amd64", @@ -844,11 +825,9 @@ "GOARCH": "arm", "GOARM": "5" }, - "supported": false + "supported": true }, "arm32v6": { - "url": "https://dl.google.com/go/go1.24rc3.linux-armv6l.tar.gz", - "sha256": "1eee0832fbc2aa4bd1a90e4169fc800d80d0ffb208ff4fc2015f8fda4b43a784", "env": { "GOOS": "linux", "GOARCH": "arm", @@ -857,8 +836,6 @@ "supported": true }, "arm32v7": { - "url": "https://dl.google.com/go/go1.24rc3.linux-armv6l.tar.gz", - "sha256": "1eee0832fbc2aa4bd1a90e4169fc800d80d0ffb208ff4fc2015f8fda4b43a784", "env": { "GOOS": "linux", "GOARCH": "arm", @@ -867,8 +844,6 @@ "supported": true }, "arm64v8": { - "url": "https://dl.google.com/go/go1.24rc3.linux-arm64.tar.gz", - "sha256": "6be6c4e543878ec513b7e9bd390b625ad1c37a2a4b206de230815b2ce87036ef", "env": { "GOOS": "linux", "GOARCH": "arm64", @@ -876,81 +851,7 @@ }, "supported": true }, - "darwin-amd64": { - "url": "https://dl.google.com/go/go1.24rc3.darwin-amd64.tar.gz", - "sha256": "0bda358b60d4a41b3a2f3326a1fd13aecdd4de54254eeaf0a9b6b84db1c3e7ae", - "env": { - "GOOS": "darwin", - "GOARCH": "amd64" - }, - "supported": false - }, - "darwin-arm64v8": { - "url": "https://dl.google.com/go/go1.24rc3.darwin-arm64.tar.gz", - "sha256": "e2f6001652660616217fa45ad51ac7e17670642f30f2b3ccc762326cd3258dc1", - "env": { - "GOOS": "darwin", - "GOARCH": "arm64" - }, - "supported": false - }, - "dragonfly-amd64": { - "url": "https://dl.google.com/go/go1.24rc3.dragonfly-amd64.tar.gz", - "sha256": "3879257d6423554d1824e1f7d28f04770ea65ca1a43b207ccd0e4723b9471edd", - "env": { - "GOOS": "dragonfly", - "GOARCH": "amd64" - }, - "supported": false - }, - "freebsd-amd64": { - "url": "https://dl.google.com/go/go1.24rc3.freebsd-amd64.tar.gz", - "sha256": "f3ab6ea3a51cdcf8027357cd7587ad0258f0559d070cf7727625069574ad965f", - "env": { - "GOOS": "freebsd", - "GOARCH": "amd64" - }, - "supported": false - }, - "freebsd-arm": { - "url": "https://dl.google.com/go/go1.24rc3.freebsd-arm.tar.gz", - "sha256": "14b29db69d634aa7039e225af6caf98454f51323b096daafe7c1a6bbde1b6d7b", - "env": { - "GOOS": "freebsd", - "GOARCH": "arm" - }, - "supported": false - }, - "freebsd-arm64v8": { - "url": "https://dl.google.com/go/go1.24rc3.freebsd-arm64.tar.gz", - "sha256": "f3413510e68f0b454adadd309b7ef421a2d5dd987d531354c06c5c638dfde261", - "env": { - "GOOS": "freebsd", - "GOARCH": "arm64" - }, - "supported": false - }, - "freebsd-i386": { - "url": "https://dl.google.com/go/go1.24rc3.freebsd-386.tar.gz", - "sha256": "0c56864e7e00379ac5d350b42e1bb685b584152dfb5353610c27b7af9131fd7e", - "env": { - "GOOS": "freebsd", - "GOARCH": "386" - }, - "supported": false - }, - "freebsd-riscv64": { - "url": "https://dl.google.com/go/go1.24rc3.freebsd-riscv64.tar.gz", - "sha256": "95e24544c769414b37351fe84fecadd1924f147fa32f85e334c48d359dac4a25", - "env": { - "GOOS": "freebsd", - "GOARCH": "riscv64" - }, - "supported": false - }, "i386": { - "url": "https://dl.google.com/go/go1.24rc3.linux-386.tar.gz", - "sha256": "fc5813d6ad0964694a91f66702e8646aa09e1f586ed2957edf1da3813ebf04ce", "env": { "GOOS": "linux", "GOARCH": "386", @@ -958,189 +859,14 @@ }, "supported": true }, - "illumos-amd64": { - "url": "https://dl.google.com/go/go1.24rc3.illumos-amd64.tar.gz", - "sha256": "9b7383e8fa4c2bbc6919721908f85032e7d3336338b5fd1d4d79aeee5676c911", - "env": { - "GOOS": "illumos", - "GOARCH": "amd64" - }, - "supported": false - }, - "loong64": { - "url": "https://dl.google.com/go/go1.24rc3.linux-loong64.tar.gz", - "sha256": "0c36946114e7930ef6541de341bd93b3830817786eeb7d36fe4ff9490d1a911a", - "env": { - "GOOS": "linux", - "GOARCH": "loong64" - }, - "supported": false - }, - "mips": { - "url": "https://dl.google.com/go/go1.24rc3.linux-mips.tar.gz", - "sha256": "cc21c18575fc8de970b8457a34409c06516fe7477deccc8aff670e9bd9a40c26", - "env": { - "GOOS": "linux", - "GOARCH": "mips" - }, - "supported": false - }, - "mips64": { - "url": "https://dl.google.com/go/go1.24rc3.linux-mips64.tar.gz", - "sha256": "cbed3de981b362a84f794386e7ffe73946c1862e7f01caeb4f6bfbc162dc2e8f", - "env": { - "GOOS": "linux", - "GOARCH": "mips64" - }, - "supported": false - }, "mips64le": { - "url": "https://dl.google.com/go/go1.24rc3.linux-mips64le.tar.gz", - "sha256": "1f4c73ebe63917debe6ab12e126fb5e6587b07c013d3c31ab79acc43dedba7f9", "env": { "GOOS": "linux", "GOARCH": "mips64le" }, "supported": true }, - "mipsle": { - "url": "https://dl.google.com/go/go1.24rc3.linux-mipsle.tar.gz", - "sha256": "17234d92617d30b9f6c281e8273ef914adb7e7ee95e2c3cbbdefce757b02d874", - "env": { - "GOOS": "linux", - "GOARCH": "mipsle" - }, - "supported": false - }, - "netbsd-amd64": { - "url": "https://dl.google.com/go/go1.24rc3.netbsd-amd64.tar.gz", - "sha256": "50efc824cb1a44e6c53faabbf66b833bb6dd6a3d837edff931f69746e23117dc", - "env": { - "GOOS": "netbsd", - "GOARCH": "amd64" - }, - "supported": false - }, - "netbsd-arm": { - "url": "https://dl.google.com/go/go1.24rc3.netbsd-arm.tar.gz", - "sha256": "7d4c237497dced1a8ee3244411bd5ee8e698a6116e7959421189e6296149e921", - "env": { - "GOOS": "netbsd", - "GOARCH": "arm" - }, - "supported": false - }, - "netbsd-arm64v8": { - "url": "https://dl.google.com/go/go1.24rc3.netbsd-arm64.tar.gz", - "sha256": "c981a26c5c8903f600d78356b103a43dd7352c3d90adcc8827b1772cdee76e04", - "env": { - "GOOS": "netbsd", - "GOARCH": "arm64" - }, - "supported": false - }, - "netbsd-i386": { - "url": "https://dl.google.com/go/go1.24rc3.netbsd-386.tar.gz", - "sha256": "70001bb605baf69681e73468c25bfeb1878cae7735c3eb20318ee0fe70f90d8d", - "env": { - "GOOS": "netbsd", - "GOARCH": "386" - }, - "supported": false - }, - "openbsd-amd64": { - "url": "https://dl.google.com/go/go1.24rc3.openbsd-amd64.tar.gz", - "sha256": "ef49dba5f39fe2687b8e1ab6f795798e765c77d4293ff590d8aeef3387914017", - "env": { - "GOOS": "openbsd", - "GOARCH": "amd64" - }, - "supported": false - }, - "openbsd-arm": { - "url": "https://dl.google.com/go/go1.24rc3.openbsd-arm.tar.gz", - "sha256": "6ba71614bdc8835c68010d5bb22f6d5112c5b5c582b8fac65c88771858a0ed25", - "env": { - "GOOS": "openbsd", - "GOARCH": "arm" - }, - "supported": false - }, - "openbsd-arm64v8": { - "url": "https://dl.google.com/go/go1.24rc3.openbsd-arm64.tar.gz", - "sha256": "ca96f9490e0425f048629d906b97626fd75187c66c3f0ba56b00a88e956992a8", - "env": { - "GOOS": "openbsd", - "GOARCH": "arm64" - }, - "supported": false - }, - "openbsd-i386": { - "url": "https://dl.google.com/go/go1.24rc3.openbsd-386.tar.gz", - "sha256": "e98d20a51bf5acd0730a5ff49d93a8ba7ee9bbbe4b9f4b4eab69c033fbf3fc4f", - "env": { - "GOOS": "openbsd", - "GOARCH": "386" - }, - "supported": false - }, - "openbsd-ppc64": { - "url": "https://dl.google.com/go/go1.24rc3.openbsd-ppc64.tar.gz", - "sha256": "b60775ab9330119ba72dc6203b8100570037eb21b69fa85fb68377ff881fb946", - "env": { - "GOOS": "openbsd", - "GOARCH": "ppc64" - }, - "supported": false - }, - "openbsd-riscv64": { - "url": "https://dl.google.com/go/go1.24rc3.openbsd-riscv64.tar.gz", - "sha256": "b901049dfaf8555138de2dc5326246d0882a776115f8026c052a66c0168859b8", - "env": { - "GOOS": "openbsd", - "GOARCH": "riscv64" - }, - "supported": false - }, - "plan9-amd64": { - "url": "https://dl.google.com/go/go1.24rc3.plan9-amd64.tar.gz", - "sha256": "05bb596553b3a051db44b2c4639b1f8f0b98a77ec188081d900c8d8052b9dad8", - "env": { - "GOOS": "plan9", - "GOARCH": "amd64" - }, - "supported": false - }, - "plan9-arm": { - "url": "https://dl.google.com/go/go1.24rc3.plan9-arm.tar.gz", - "sha256": "7976ffe9cec2d4bcc683368b4ce72bc6b7479f17171bacb3e8bbdf5c4964283e", - "env": { - "GOOS": "plan9", - "GOARCH": "arm" - }, - "supported": false - }, - "plan9-i386": { - "url": "https://dl.google.com/go/go1.24rc3.plan9-386.tar.gz", - "sha256": "b864ef4aa9aa929739e4468fcc849741804e3b299e326da7fb1d4575b967d07e", - "env": { - "GOOS": "plan9", - "GOARCH": "386" - }, - "supported": false - }, - "ppc64": { - "url": "https://dl.google.com/go/go1.24rc3.linux-ppc64.tar.gz", - "sha256": "3b58dbf05b9e249814c78ad52a99af8f3245759e4866a89618aa732ada7ae42e", - "env": { - "GOOS": "linux", - "GOARCH": "ppc64" - }, - "supported": false - }, "ppc64le": { - "url": "https://dl.google.com/go/go1.24rc3.linux-ppc64le.tar.gz", - "sha256": "302957949a12771975be4e906e890872b98f9139430bb6807c9eb4d93a9759ee", "env": { "GOOS": "linux", "GOARCH": "ppc64le" @@ -1148,8 +874,6 @@ "supported": true }, "riscv64": { - "url": "https://dl.google.com/go/go1.24rc3.linux-riscv64.tar.gz", - "sha256": "93a9c11fc8a5840bcc0518a839edcecc999e0f77c023e05b6670459ae167c94d", "env": { "GOOS": "linux", "GOARCH": "riscv64", @@ -1158,67 +882,29 @@ "supported": true }, "s390x": { - "url": "https://dl.google.com/go/go1.24rc3.linux-s390x.tar.gz", - "sha256": "17ae869511a9783c496f42f4e20b4be1e7a254ca3e5e1fe02f374e619261b8d2", "env": { "GOOS": "linux", "GOARCH": "s390x" }, "supported": true }, - "solaris-amd64": { - "url": "https://dl.google.com/go/go1.24rc3.solaris-amd64.tar.gz", - "sha256": "3a54b12688b9f5f25a8fd8afca770812194efb8b63d9901cf1fa13f33445c4ae", - "env": { - "GOOS": "solaris", - "GOARCH": "amd64" - }, - "supported": false - }, "src": { - "url": "https://dl.google.com/go/go1.24rc3.src.tar.gz", - "sha256": "2c7128a58f62cfdef4eaf68e7b9bf187f3ffea2ec06754a64d6ee36bfea3d691", - "supported": true + "url": "https://github.com/golang/go/archive/e8ed85d6c22d9530523315c3048ed0455d205bff.tar.gz", + "supported": false }, "windows-amd64": { - "url": "https://dl.google.com/go/go1.24rc3.windows-amd64.zip", - "sha256": "8d7e7cf9bc8b14104f69ef39f009231081a903375ea951eaef58619df1b2bbd2", "env": { "GOOS": "windows", "GOARCH": "amd64" }, "supported": true - }, - "windows-arm64v8": { - "url": "https://dl.google.com/go/go1.24rc3.windows-arm64.zip", - "sha256": "8b790de70fcdb7dc51d13d96eeccef7e206e768361fe1034ec56cc62fcbb6e05", - "env": { - "GOOS": "windows", - "GOARCH": "arm64" - }, - "supported": false - }, - "windows-i386": { - "url": "https://dl.google.com/go/go1.24rc3.windows-386.zip", - "sha256": "967c9948ac42c61a5fffdcc477a6ef046fcf24c441ad9b90240708ce6e390dd2", - "env": { - "GOOS": "windows", - "GOARCH": "386" - }, - "supported": false } }, "variants": [ + "trixie", "bookworm", - "bullseye", - "alpine3.21", - "alpine3.20", - "windows/windowsservercore-ltsc2025", - "windows/windowsservercore-ltsc2022", - "windows/windowsservercore-1809", - "windows/nanoserver-ltsc2025", - "windows/nanoserver-ltsc2022", - "windows/nanoserver-1809" + "alpine3.22", + "alpine3.21" ] } } diff --git a/versions.sh b/versions.sh index df24afbe..fc71233e 100755 --- a/versions.sh +++ b/versions.sh @@ -88,29 +88,101 @@ goVersions="$( for version in "${versions[@]}"; do export version - if \ - ! goJson="$(jq <<<"$goVersions" -ce ' - [ .[] | select(.major == env.version) ] | sort_by( - .version - | split(".") - | map( - if test("^[0-9]+$") then - tonumber - else . end - ) - )[-1] - ')" \ - || ! fullVersion="$(jq <<<"$goJson" -r '.version')" \ - || [ -z "$fullVersion" ] \ - ; then - echo >&2 "warning: cannot find full version for $version" - continue - fi + case "$version" in + tip) + # clamp so we don't update too frequently (https://github.com/docker-library/golang/issues/464#issuecomment-1587758290, https://github.com/docker-library/faq#can-i-use-a-bot-to-make-my-image-update-prs) + # https://github.com/golang/go + # https://go.googlesource.com/go + snapshotDate="$(date --utc --date 'last sunday 23:59:59 UTC + 1 second' '+%s')" + snapshotDateStr="$(date --utc --date "@$snapshotDate" '+%Y-%m-%d @ %H:%M:%S')" + commit='HEAD' # this is also our iteration variable, so if we don't find a suitable commit each time through this loop, we'll use the last commit of the previous list to get a list of new (older) commits until we find one suitably old enough + fullVersion= + date= + while [ -z "$fullVersion" ]; do + commits="$( + # wget -qO- 'https://go.googlesource.com/go/+log/refs/heads/master?format=JSON' # the first line of this is ")]}'" for avoiding javscript injection vulnerabilities, which is annoying, and the dates are *super* cursed ("Mon Dec 04 10:00:41 2023 -0800") -- even date(1) doesn't want to parse them ("date: invalid date β€˜Mon Dec 04 10:00:41 2023 -0800’") + # ... so we use GitHub's "atom feeds" endpoint instead, which if you ask for JSON, gives back JSON πŸ˜„ + wget -qO- --header 'Accept: application/json' "https://github.com/golang/go/commits/$commit.atom" \ + | jq -r ' + .payload.commitGroups[].commits[] + | first([ .committedDate, .authoredDate ] | sort | reverse[]) as $date + | "\(.oid) \($date)" + | @sh + ' + )" + eval "commitDates=( $commits )" + if [ "${#commitDates[@]}" -eq 0 ]; then + echo >&2 "error: got no commits when listing history from $commit" + exit 1 + fi + for commitDate in "${commitDates[@]}"; do + commit="${commitDate%%[[:space:]]*}" + date="${commitDate#$commit[[:space:]]}" + [ "$commit" != "$date" ] # sanity check + date="$(date --utc --date "$date" '+%s')" + if [ "$date" -le "$snapshotDate" ]; then + fullVersion="$commit" + break 2 + fi + done + done + if [ -z "$fullVersion" ]; then + echo >&2 "error: cannot find full version for $version (maybe too many commits since $snapshotDateStr?)" + exit 1 + fi + [ "$commit" = "$fullVersion" ] + [ -n "$date" ] + fullVersion="$(date --utc --date "@$date" '+%Y%m%d')" + url="https://github.com/golang/go/archive/$commit.tar.gz" + sha256= # TODO "$(wget -qO- "$url" | sha256sum | cut -d' ' -f1)" # 😭 (this is not fast) + goJson="$( + export fullVersion commit dateStr date url sha256 + jq -nc ' + { + version: "tip-\(env.fullVersion)", + commit: { + version: env.commit, + }, + arches: { + src: { + url: env.url, + #sha256: env.sha256, + }, + }, + } + ' + )" + ;; + + *) + if \ + ! goJson="$(jq <<<"$goVersions" -ce ' + [ .[] | select(.major == env.version) ] | sort_by( + .version + | split(".") + | map( + if test("^[0-9]+$") then + tonumber + else . end + ) + )[-1] + ')" \ + || ! fullVersion="$(jq <<<"$goJson" -r '.version')" \ + || [ -z "$fullVersion" ] \ + ; then + echo >&2 "warning: cannot find full version for $version" + continue + fi + ;; + esac echo "$version: $fullVersion" - doc="$(jq <<<"$goJson" -c --argjson potentiallySupportedArches "$potentiallySupportedArches" '{ + doc="$(jq <<<"$goJson" -c --argjson potentiallySupportedArches "$potentiallySupportedArches" ' + { version: .version, + commit: .commit, + date: .date, arches: ( .arches | . += ( @@ -131,8 +203,12 @@ for version in "${versions[@]}"; do | with_entries( .key as $bashbrewArch | .value.supported = ( - # https://github.com/docker-library/golang/pull/500#issuecomment-1863578601 - as of Go 1.21+, we no longer build from source - .value.url + .key != "src" + and ( + # https://github.com/docker-library/golang/pull/500#issuecomment-1863578601 - as of Go 1.21+, we no longer build from source (except for tip builds) + .value.url + or env.version == "tip" + ) and ($potentiallySupportedArches | index($bashbrewArch)) ) | .value.env += @@ -143,15 +219,15 @@ for version in "${versions[@]}"; do # https://go.dev/doc/go1.18#amd64 { GOAMD64: "v1" } # TODO ^^ figure out what to do with GOAMD64 / GO386 if/when the OS baselines change and these choices needs to be per-variant /o\ (probably move it to the template instead, in fact, since that is where we can most easily toggle based on variant) - elif $bashbrewArch == "riscv64" and env.version != "1.22" then + elif $bashbrewArch == "riscv64" then # https://go.dev/doc/go1.23#riscv { GORISCV64: "rva20u64" } elif $bashbrewArch | startswith("arm64v") then - { GOARCH: "arm64" } - + if env.version != "1.22" then { + { + GOARCH: "arm64", # https://go.dev/doc/go1.23#arm64 GOARM64: ($bashbrewArch | ltrimstr("arm64") | if index(".") then . else . + ".0" end), - } else {} end + } elif $bashbrewArch | startswith("arm32v") then { GOARCH: "arm", GOARM: ($bashbrewArch | ltrimstr("arm32v")) } else {} end @@ -159,39 +235,48 @@ for version in "${versions[@]}"; do ) ), variants: [ + "trixie", "bookworm", - "bullseye", ( + "3.22", "3.21", - "3.20", empty | "alpine" + .), - if .arches | has("windows-amd64") and .["windows-amd64"].url then + if .arches | has("windows-amd64") and .["windows-amd64"].url then # TODO consider windows + tip ( "ltsc2025", "ltsc2022", - "1809", empty | "windows/windowsservercore-" + .), ( "ltsc2025", "ltsc2022", - "1809", empty | "windows/nanoserver-" + .) else empty end ], - }')" + } + # if "date" or "commit" are null, exclude them + | with_entries(select(.value)) + ')" json="$(jq <<<"$json" -c --argjson doc "$doc" '.[env.version] = $doc')" done jq <<<"$json" ' - def sort_keys: + to_entries + | sort_by( + .key + | [ + if . == "tip" then 0 else 1 end, # make sure tip is first so it ends up last when we reverse + (split("[.-]"; "") | map(tonumber? // .)) + ] + ) + | reverse + | from_entries + | .[].arches |= ( to_entries | sort_by(.key) | from_entries - ; - sort_keys - | .[].arches |= sort_keys + ) ' > versions.json