@@ -5,7 +5,7 @@ ARG XX_VERSION=1.1.2
5
5
ARG OSXCROSS_VERSION=11.3-r7-alpine
6
6
ARG GOLANGCI_LINT_VERSION=v1.47.3
7
7
8
- ARG PKG =github.com/docker/docker-credential-helpers
8
+ ARG PACKAGE =github.com/docker/docker-credential-helpers
9
9
10
10
# xx is a helper for cross-compilation
11
11
FROM --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx
@@ -15,7 +15,7 @@ FROM crazymax/osxcross:${OSXCROSS_VERSION} AS osxcross
15
15
16
16
FROM --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS gobase
17
17
COPY --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
19
19
ENV GOFLAGS="-mod=vendor"
20
20
ENV CGO_ENABLED="1"
21
21
WORKDIR /src
@@ -57,13 +57,6 @@ RUN --mount=type=bind,target=. \
57
57
--mount=from=golangci-lint,source=/usr/bin/golangci-lint,target=/usr/bin/golangci-lint \
58
58
golangci-lint run ./...
59
59
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
-
67
60
FROM gobase AS base
68
61
ARG TARGETPLATFORM
69
62
RUN xx-apk add musl-dev gcc libsecret-dev pass
@@ -93,53 +86,49 @@ FROM scratch AS test-coverage
93
86
COPY --from=test /out /
94
87
95
88
FROM base AS build-linux
96
- ARG PKG
89
+ ARG PACKAGE
97
90
ARG TARGETOS
98
91
ARG TARGETARCH
99
92
ARG TARGETVARIANT
100
93
RUN --mount=type=bind,target=. \
101
94
--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
104
96
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}
107
99
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}
109
101
xx-verify /out/docker-credential-secretservice-${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
110
102
EOT
111
103
112
104
FROM base AS build-darwin
113
- ARG PKG
105
+ ARG PACKAGE
114
106
ARG TARGETOS
115
107
ARG TARGETARCH
116
108
ARG TARGETVARIANT
117
109
RUN --mount=type=bind,target=. \
118
110
--mount=type=cache,target=/root/.cache \
119
111
--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
122
113
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}
126
117
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}
129
119
xx-verify /out/docker-credential-pass-${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
130
120
EOT
131
121
132
122
FROM base AS build-windows
133
- ARG PKG
123
+ ARG PACKAGE
134
124
ARG TARGETARCH
135
125
ARG TARGETVARIANT
136
126
RUN --mount=type=bind,target=. \
137
127
--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
140
129
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
143
132
xx-verify /out/docker-credential-wincred-${TARGETARCH}${TARGETVARIANT}.exe
144
133
EOT
145
134
0 commit comments