11# syntax=docker/dockerfile:1
22
3+ ARG ALPINE_VERSION=3.23.3
34ARG GO_VERSION=latest
45ARG GOLANGCI_LINT_VERSION=v2.2.1
56ARG OSXCROSS_VERSION=15.5
7+ ARG ADDLICENSE_VERSION=v1.2.0
8+ ARG LICENSE_ARGS="-c 'Docker, Inc.' -l apache -ignore '**/*.yaml' -ignore '**/*.yml' -ignore '.github/**' -ignore 'store/keychain/internal/go-keychain/**' -ignore 'vendor/**' -ignore '.git/**' ."
9+
10+ FROM ghcr.io/google/addlicense:${ADDLICENSE_VERSION} AS addlicense
611
712FROM --platform=${BUILDPLATFORM} golangci/golangci-lint:${GOLANGCI_LINT_VERSION}-alpine AS lint-base
813
@@ -13,6 +18,32 @@ FROM --platform=${BUILDPLATFORM} crazymax/osxcross:${OSXCROSS_VERSION}-alpine AS
1318FROM --platform=${BUILDPLATFORM} golang:${GO_VERSION}-alpine AS gobase
1419RUN apk add --no-cache findutils build-base git
1520
21+ FROM alpine:${ALPINE_VERSION} AS license-validate
22+ ARG LICENSE_ARGS
23+ COPY --link --from=addlicense /app/addlicense /usr/bin/addlicense
24+ WORKDIR /src
25+ RUN --mount=type=bind,target=.,ro <<EOT
26+ set -eu
27+ echo "== Checking license headers =="
28+ eval "/usr/bin/addlicense -check $LICENSE_ARGS"
29+ EOT
30+
31+ FROM alpine:${ALPINE_VERSION} AS do-license-update
32+ ARG LICENSE_ARGS
33+ COPY --from=addlicense /app/addlicense /usr/bin/addlicense
34+ RUN mkdir -p /generate/out
35+ WORKDIR /src
36+ RUN apk add --no-cache git
37+ RUN --mount=type=bind,target=.,rw <<EOT
38+ set -eu
39+ echo "== Checking license headers =="
40+ eval "/usr/bin/addlicense -v $LICENSE_ARGS"
41+ ./scripts/copy-only-diff /generate/out
42+ EOT
43+
44+ FROM scratch AS license-update
45+ COPY --from=do-license-update /generate/out .
46+
1647FROM gobase AS linux-base
1748ARG TARGETARCH
1849ENV GOOS=linux
0 commit comments