@@ -5,7 +5,7 @@ ARG XX_VERSION=1.1.2
55ARG OSXCROSS_VERSION=11.3-r7-alpine
66ARG GOLANGCI_LINT_VERSION=v1.47.3
77
8- ARG PKG =github.com/docker/docker-credential-helpers
8+ ARG PACKAGE =github.com/docker/docker-credential-helpers
99
1010# xx is a helper for cross-compilation
1111FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
@@ -15,7 +15,7 @@ FROM crazymax/osxcross:${OSXCROSS_VERSION} AS osxcross
1515
1616FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS gobase
1717COPY --from=xx / /
18- RUN apk add --no-cache clang file git lld llvm pkgconf rsync
18+ RUN apk add --no-cache clang file git lld llvm make pkgconf rsync
1919ENV GOFLAGS="-mod=vendor"
2020ENV CGO_ENABLED="1"
2121WORKDIR /src
@@ -57,13 +57,6 @@ RUN --mount=type=bind,target=. \
5757 --mount=from=golangci-lint,source=/usr/bin/golangci-lint,target=/usr/bin/golangci-lint \
5858 golangci-lint run ./...
5959
60- FROM gobase AS version
61- ARG PKG
62- RUN --mount=target=. \
63- VERSION=$(git describe --match 'v[0-9]*' --dirty='.m' --always --tags) REVISION=$(git rev-parse HEAD)$(if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi); \
64- echo "-s -w -X ${PKG}/credentials.Version=${VERSION} -X ${PKG}/credentials.Revision=${REVISION} -X ${PKG}/credentials.Package=${PKG}" | tee /tmp/.ldflags; \
65- echo -n "${VERSION}" | tee /tmp/.version;
66-
6760FROM gobase AS base
6861ARG TARGETPLATFORM
6962RUN xx-apk add musl-dev gcc libsecret-dev pass
@@ -93,53 +86,49 @@ FROM scratch AS test-coverage
9386COPY --from=test /out /
9487
9588FROM base AS build-linux
96- ARG PKG
89+ ARG PACKAGE
9790ARG TARGETOS
9891ARG TARGETARCH
9992ARG TARGETVARIANT
10093RUN --mount=type=bind,target=. \
10194 --mount=type=cache,target=/root/.cache \
102- --mount=type=cache,target=/go/pkg/mod \
103- --mount=type=bind,from=version,source=/tmp/.ldflags,target=/tmp/.ldflags <<EOT
95+ --mount=type=cache,target=/go/pkg/mod <<EOT
10496 set -ex
105- mkdir /out
106- xx-go build -ldflags "$(cat /tmp/.ldflags) -X ${PKG}/credentials.Name =docker-credential-pass" -o /out/docker-credential-pass- ${TARGETOS}-${TARGETARCH}${TARGETVARIANT} ./pass/cmd/
97+ xx-go --wrap
98+ make build-pass PACKAGE=$PACKAGE DESTDIR=/out BINNAME =docker-credential-pass- ${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
10799 xx-verify /out/docker-credential-pass-${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
108- xx-go build -ldflags "$(cat /tmp/.ldflags) -X ${PKG}/credentials.Name =docker-credential-secretservice" -o /out/docker-credential-secretservice- ${TARGETOS}-${TARGETARCH}${TARGETVARIANT} ./secretservice/cmd/
100+ make build-secretservice PACKAGE=$PACKAGE DESTDIR=/out BINNAME =docker-credential-secretservice- ${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
109101 xx-verify /out/docker-credential-secretservice-${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
110102EOT
111103
112104FROM base AS build-darwin
113- ARG PKG
105+ ARG PACKAGE
114106ARG TARGETOS
115107ARG TARGETARCH
116108ARG TARGETVARIANT
117109RUN --mount=type=bind,target=. \
118110 --mount=type=cache,target=/root/.cache \
119111 --mount=type=cache,target=/go/pkg/mod \
120- --mount=type=bind,from=osxcross,src=/osxsdk,target=/xx-sdk \
121- --mount=type=bind,from=version,source=/tmp/.ldflags,target=/tmp/.ldflags <<EOT
112+ --mount=type=bind,from=osxcross,src=/osxsdk,target=/xx-sdk <<EOT
122113 set -ex
123- mkdir /out
124- xx- go install std
125- xx-go build -ldflags "$(cat /tmp/.ldflags) -X ${PKG}/credentials.Name =docker-credential-osxkeychain" -o /out/docker-credential-osxkeychain- ${TARGETARCH}${TARGETVARIANT} ./osxkeychain/cmd/
114+ xx-go --wrap
115+ go install std
116+ make build-osxkeychain PACKAGE=$PACKAGE DESTDIR=/out BINNAME =docker-credential-osxkeychain- ${TARGETARCH}${TARGETVARIANT}
126117 xx-verify /out/docker-credential-osxkeychain-${TARGETARCH}${TARGETVARIANT}
127-
128- xx-go build -ldflags "$(cat /tmp/.ldflags) -X ${PKG}/credentials.Name=docker-credential-pass" -o /out/docker-credential-pass-${TARGETOS}-${TARGETARCH}${TARGETVARIANT} ./pass/cmd/
118+ make build-pass PACKAGE=$PACKAGE DESTDIR=/out BINNAME=docker-credential-pass-${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
129119 xx-verify /out/docker-credential-pass-${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
130120EOT
131121
132122FROM base AS build-windows
133- ARG PKG
123+ ARG PACKAGE
134124ARG TARGETARCH
135125ARG TARGETVARIANT
136126RUN --mount=type=bind,target=. \
137127 --mount=type=cache,target=/root/.cache \
138- --mount=type=cache,target=/go/pkg/mod \
139- --mount=type=bind,from=version,source=/tmp/.ldflags,target=/tmp/.ldflags <<EOT
128+ --mount=type=cache,target=/go/pkg/mod <<EOT
140129 set -ex
141- mkdir /out
142- xx-go build -ldflags "$(cat /tmp/.ldflags) -X ${PKG}/credentials.Name =docker-credential-wincred" -o /out/docker-credential-wincred- ${TARGETARCH}${TARGETVARIANT}.exe ./wincred/cmd/
130+ xx-go --wrap
131+ make build-wincred PACKAGE=$PACKAGE DESTDIR=/out BINNAME =docker-credential-wincred- ${TARGETARCH}${TARGETVARIANT}.exe
143132 xx-verify /out/docker-credential-wincred-${TARGETARCH}${TARGETVARIANT}.exe
144133EOT
145134
0 commit comments