Files
moby/hack/dockerfiles/generate-files.Dockerfile
Paweł Gronowski 12756071f1 update to go1.23.6
This minor release include 1 security fix following the security policy:

- crypto/elliptic: timing sidechannel for P-256 on ppc64le

  Due to the usage of a variable time instruction in the assembly implementation
  of an internal function, a small number of bits of secret scalars are leaked on
  the ppc64le architecture. Due to the way this function is used, we do not
  believe this leakage is enough to allow recovery of the private key when P-256
  is used in any well known protocols.

This is CVE-2025-22866 and Go issue https://go.dev/issue/71383.

View the release notes for more information:
https://go.dev/doc/devel/release#go1.23.6

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2025-02-04 20:27:27 +01:00

75 lines
2.3 KiB
Docker

# syntax=docker/dockerfile:1
ARG GO_VERSION=1.23.6
ARG BASE_DEBIAN_DISTRO="bookworm"
ARG PROTOC_VERSION=3.11.4
# protoc is dynamically linked to glibc so can't use alpine base
FROM golang:${GO_VERSION}-${BASE_DEBIAN_DISTRO} AS base
RUN apt-get update && apt-get --no-install-recommends install -y git unzip
ARG PROTOC_VERSION
ARG TARGETOS
ARG TARGETARCH
ENV GOTOOLCHAIN=local
RUN <<EOT
set -e
arch=$(echo $TARGETARCH | sed -e s/amd64/x86_64/ -e s/arm64/aarch_64/)
wget -q https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-${TARGETOS}-${arch}.zip
unzip protoc-${PROTOC_VERSION}-${TARGETOS}-${arch}.zip -d /usr/local
EOT
WORKDIR /go/src/github.com/docker/docker
FROM base AS src
WORKDIR /out
COPY . .
RUN <<EOT
set -ex
git config --global user.email "moby@example.com"
git config --global user.name "moby"
git init .
git add .
git commit -m 'init'
EOT
FROM base AS tools
RUN --mount=from=src,source=/out,target=.,rw \
--mount=type=cache,target=/root/.cache/go-build <<EOT
set -ex
./hack/with-go-mod.sh go install -v -mod=vendor -modfile=vendor.mod \
github.com/gogo/protobuf/protoc-gen-gogo \
github.com/gogo/protobuf/protoc-gen-gogofaster \
github.com/gogo/protobuf/protoc-gen-gogoslick \
github.com/golang/protobuf/protoc-gen-go
./hack/with-go-mod.sh go build -v -mod=vendor -modfile=vendor.mod \
-o /usr/bin/pluginrpc-gen \
./pkg/plugins/pluginrpc-gen
EOT
FROM tools AS generated
ENV GO111MODULE=off
RUN --mount=from=src,source=/out,target=.,rw <<EOT
set -ex
go generate -v ./...
mkdir /out
git ls-files -m --others -- ':!vendor' 'profiles/seccomp/default.json' '**/*.pb.go' | tar -cf - --files-from - | tar -C /out -xf -
EOT
FROM scratch AS update
COPY --from=generated /out /
FROM base AS validate
RUN --mount=from=src,source=/out,target=.,rw \
--mount=type=bind,from=generated,source=/out,target=/generated-files <<EOT
set -e
git add -A
if [ "$(ls -A /generated-files)" ]; then
cp -rf /generated-files/* .
fi
diff=$(git status --porcelain -- ':!vendor' 'profiles/seccomp/default.json' '**/*.pb.go')
if [ -n "$diff" ]; then
echo >&2 'ERROR: The result of "go generate" differs. Please update with "make generate-files"'
echo "$diff"
exit 1
fi
EOT