1.PHONY: all deps osxkeychain secretservice test validate wincred pass deb 2 3TRAVIS_OS_NAME ?= linux 4VERSION := $(shell grep 'const Version' credentials/version.go | awk -F'"' '{ print $$2 }') 5 6all: test 7 8deps: 9 go get -u golang.org/x/lint/golint 10 11clean: 12 rm -rf bin 13 rm -rf release 14 15osxkeychain: 16 mkdir -p bin 17 go build -ldflags -s -o bin/docker-credential-osxkeychain osxkeychain/cmd/main_darwin.go 18 19osxcodesign: osxkeychain 20 $(eval SIGNINGHASH = $(shell security find-identity -v -p codesigning | grep "Developer ID Application: Docker Inc" | cut -d ' ' -f 4)) 21 xcrun -log codesign -s $(SIGNINGHASH) --force --verbose bin/docker-credential-osxkeychain 22 xcrun codesign --verify --deep --strict --verbose=2 --display bin/docker-credential-osxkeychain 23 24osxrelease: clean vet_osx lint fmt test osxcodesign 25 mkdir -p release 26 @echo "\nPackaging version ${VERSION}\n" 27 cd bin && tar cvfz ../release/docker-credential-osxkeychain-v$(VERSION)-amd64.tar.gz docker-credential-osxkeychain 28 29secretservice: 30 mkdir -p bin 31 go build -o bin/docker-credential-secretservice secretservice/cmd/main_linux.go 32 33pass: 34 mkdir -p bin 35 go build -o bin/docker-credential-pass pass/cmd/main_linux.go 36 37wincred: 38 mkdir -p bin 39 go build -o bin/docker-credential-wincred.exe wincred/cmd/main_windows.go 40 41winrelease: clean vet_win lint fmt test wincred 42 mkdir -p release 43 @echo "\nPackaging version ${VERSION}\n" 44 cd bin && zip ../release/docker-credential-wincred-v$(VERSION)-amd64.zip docker-credential-wincred.exe 45 46test: 47 # tests all packages except vendor 48 go test -v `go list ./... | grep -v /vendor/` 49 50vet: vet_$(TRAVIS_OS_NAME) 51 go vet ./credentials 52 53vet_win: 54 go vet ./wincred 55 56vet_osx: 57 go vet ./osxkeychain 58 59vet_linux: 60 go vet ./secretservice 61 62lint: 63 for p in `go list ./... | grep -v /vendor/`; do \ 64 golint $$p ; \ 65 done 66 67fmt: 68 gofmt -s -l `ls **/*.go | grep -v vendor` 69 70validate: vet lint fmt 71 72 73BUILDIMG:=docker-credential-secretservice-$(VERSION) 74deb: 75 mkdir -p release 76 docker build -f deb/Dockerfile \ 77 --build-arg VERSION=$(VERSION) \ 78 --build-arg DISTRO=xenial \ 79 --tag $(BUILDIMG) \ 80 . 81 docker run --rm --net=none $(BUILDIMG) tar cf - /release | tar xf - 82 docker rmi $(BUILDIMG) 83