github.com/pdmccormick/importable-docker-buildx@v0.0.0-20240426161518-e47091289030/hack/dockerfiles/vendor.Dockerfile (about) 1 # syntax=docker/dockerfile:1 2 3 ARG GO_VERSION=1.21 4 ARG MODOUTDATED_VERSION=v0.8.0 5 6 FROM golang:${GO_VERSION}-alpine AS base 7 RUN apk add --no-cache git rsync 8 WORKDIR /src 9 10 FROM base AS vendored 11 RUN --mount=target=/context \ 12 --mount=target=.,type=tmpfs \ 13 --mount=target=/go/pkg/mod,type=cache <<EOT 14 set -e 15 rsync -a /context/. . 16 go mod tidy 17 go mod vendor 18 mkdir /out 19 cp -r go.mod go.sum vendor /out 20 EOT 21 22 FROM scratch AS update 23 COPY --from=vendored /out /out 24 25 FROM vendored AS validate 26 RUN --mount=target=/context \ 27 --mount=target=.,type=tmpfs <<EOT 28 set -e 29 rsync -a /context/. . 30 git add -A 31 rm -rf vendor 32 cp -rf /out/* . 33 if [ -n "$(git status --porcelain -- go.mod go.sum vendor)" ]; then 34 echo >&2 'ERROR: Vendor result differs. Please vendor your package with "make vendor"' 35 git status --porcelain -- go.mod go.sum vendor 36 exit 1 37 fi 38 EOT 39 40 FROM psampaz/go-mod-outdated:${MODOUTDATED_VERSION} AS go-mod-outdated 41 FROM base AS outdated 42 RUN --mount=target=.,ro \ 43 --mount=target=/go/pkg/mod,type=cache \ 44 --mount=from=go-mod-outdated,source=/home/go-mod-outdated,target=/usr/bin/go-mod-outdated \ 45 go list -mod=readonly -u -m -json all | go-mod-outdated -update -direct