...
1PACKAGE ?= github.com/docker/docker-credential-helpers
2VERSION ?= $(shell ./hack/git-meta version)
3REVISION ?= $(shell ./hack/git-meta revision)
4
5GO_PKG = github.com/docker/docker-credential-helpers
6GO_LDFLAGS = -s -w -X ${GO_PKG}/credentials.Version=${VERSION} -X ${GO_PKG}/credentials.Revision=${REVISION} -X ${GO_PKG}/credentials.Package=${PACKAGE}
7
8BUILDX_CMD ?= docker buildx
9DESTDIR ?= ./bin/build
10COVERAGEDIR ?= ./bin/coverage
11
12# 10.11 is the minimum supported version for osxkeychain
13export MACOSX_DEPLOYMENT_TARGET = 10.11
14ifeq "$(shell go env GOOS)" "darwin"
15 export CGO_CFLAGS = -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET)
16endif
17
18.PHONY: all
19all: cross
20
21.PHONY: clean
22clean:
23 rm -rf bin
24
25.PHONY: build-%
26build-%: # build, can be one of build-osxkeychain build-pass build-secretservice build-wincred
27 go build -trimpath -ldflags="$(GO_LDFLAGS) -X ${GO_PKG}/credentials.Name=docker-credential-$*" -o "$(DESTDIR)/docker-credential-$*" ./$*/cmd/
28
29# aliases for build-* targets
30.PHONY: osxkeychain secretservice pass wincred
31osxkeychain: build-osxkeychain
32secretservice: build-secretservice
33pass: build-pass
34wincred: build-wincred
35
36.PHONY: cross
37cross: # cross build all supported credential helpers
38 $(BUILDX_CMD) bake binaries
39
40.PHONY: release
41release: # create release
42 ./hack/release
43
44.PHONY: test
45test:
46 mkdir -p $(COVERAGEDIR)
47 go test -short -v -coverprofile=$(COVERAGEDIR)/coverage.txt -covermode=atomic ./...
48 go tool cover -func=$(COVERAGEDIR)/coverage.txt
49
50.PHONY: lint
51lint:
52 $(BUILDX_CMD) bake lint
53
54.PHONY: validate-vendor
55validate-vendor:
56 $(BUILDX_CMD) bake vendor-validate
57
58.PHONY: fmt
59fmt:
60 gofmt -s -l `ls **/*.go | grep -v vendor`
61
62.PHONY: validate
63validate: lint validate-vendor fmt
64
65BUILDIMG:=docker-credential-secretservice-$(VERSION)
66.PHONY: deb
67deb:
68 mkdir -p release
69 docker build -f deb/Dockerfile \
70 --build-arg VERSION=$(patsubst v%,%,$(VERSION)) \
71 --build-arg REVISION=$(REVISION) \
72 --tag $(BUILDIMG) \
73 .
74 docker run --rm --net=none $(BUILDIMG) tar cf - /release | tar xf -
75 docker rmi $(BUILDIMG)
76
77.PHONY: vendor
78vendor:
79 $(eval $@_TMP_OUT := $(shell mktemp -d -t docker-output.XXXXXXXXXX))
80 $(BUILDX_CMD) bake --set "*.output=type=local,dest=$($@_TMP_OUT)" vendor
81 rm -rf ./vendor
82 cp -R "$($@_TMP_OUT)"/* .
83 rm -rf "$($@_TMP_OUT)"
84
85.PHONY: print-%
86print-%: ; @echo $($*)
View as plain text