Makefile 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. .PHONY: deps build test bundle-webui clean-bundle bundle-swagger proto bundle build
  2. docker-build:
  3. docker run --rm -i -t -e TRAVIS_GO_VERSION=$(TRAVIS_GO_VERSION) -e TRAVIS_BUILD_NUMBER=$(TRAVIS_BUILD_NUMBER) -e TRAVIS_TAG=$(TRAVIS_TAG) -v `pwd`:/fs/src/github.com/cad/ovpm -w /fs/src/github.com/cad/ovpm cadthecoder/ovpm-builder:latest
  4. docker-build-shell:
  5. docker run --rm -i -t -e TRAVIS_GO_VERSION=$(TRAVIS_GO_VERSION) -e TRAVIS_BUILD_NUMBER=$(TRAVIS_BUILD_NUMBER) -e TRAVIS_TAG=$(TRAVIS_TAG) -v `pwd`:/fs/src/github.com/cad/ovpm -w /fs/src/github.com/cad/ovpm cadthecoder/ovpm-builder:latest /bin/bash
  6. development-deps:
  7. # grpc related dependencies
  8. go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
  9. go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger
  10. go get -u github.com/golang/protobuf/protoc-gen-go/...
  11. # static asset bundling
  12. go get github.com/kevinburke/go-bindata/...
  13. # for creating rpm, deb packages
  14. go get github.com/goreleaser/nfpm/cmd/nfpm@latest
  15. # webui related dependencies
  16. pacman -Sy yarn
  17. # Runs unit tests.
  18. test:
  19. go test -count=1 -race -coverprofile=coverage.txt -covermode=atomic .
  20. proto:
  21. protoc -I/usr/local/include -I api/pb/ -I/usr/local/include -I$(shell go list -m -f "{{.Dir}}" github.com/grpc-ecosystem/grpc-gateway)/third_party/googleapis api/pb/user.proto api/pb/vpn.proto api/pb/network.proto api/pb/auth.proto --grpc-gateway_out=logtostderr=true:api/pb
  22. protoc -I/usr/local/include -I api/pb/ -I/usr/local/include -I$(shell go list -m -f "{{.Dir}}" github.com/grpc-ecosystem/grpc-gateway)/third_party/googleapis api/pb/user.proto api/pb/vpn.proto api/pb/network.proto api/pb/auth.proto --go_out=plugins=grpc:api/pb
  23. clean-bundle:
  24. @echo Cleaning up bundle/
  25. rm -rf bundle/
  26. mkdir -p bundle/
  27. bundle-webui:
  28. @echo Bundling webui
  29. yarn --cwd webui/ovpm/ install
  30. yarn --cwd webui/ovpm/ build
  31. cp -r webui/ovpm/build/* bundle
  32. bundle-swagger: proto
  33. protoc -I/usr/local/include -I api/pb/ -I/usr/local/include -I$(shell go list -m -f "{{.Dir}}" github.com/grpc-ecosystem/grpc-gateway)/third_party/googleapis api/pb/user.proto api/pb/vpn.proto api/pb/network.proto api/pb/auth.proto --swagger_out=logtostderr=true:bundle
  34. bundle: clean-bundle bundle-webui bundle-swagger
  35. go-bindata -pkg bundle -o bundle/bindata.go bundle/...
  36. # Builds server and client binaries under ./bin folder. Accetps $VERSION env var.
  37. build: bundle
  38. @echo Building
  39. rm -rf bin/
  40. mkdir -p bin/
  41. #CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -X 'github.com/cad/ovpm.Version=$(VERSION)' -extldflags '-static'" -o ./bin/ovpm ./cmd/ovpm
  42. #CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -X 'github.com/cad/ovpm.Version=$(VERSION)' -extldflags '-static'" -o ./bin/ovpmd ./cmd/ovpmd
  43. # Link dynamically for now
  44. CGO_CFLAGS="-g -O2 -Wno-return-local-addr" go build -ldflags="-X 'github.com/cad/ovpm.Version=$(VERSION)'" -o ./bin/ovpm ./cmd/ovpm
  45. CGO_CFLAGS="-g -O2 -Wno-return-local-addr" go build -ldflags="-X 'github.com/cad/ovpm.Version=$(VERSION)'" -o ./bin/ovpmd ./cmd/ovpmd
  46. clean-dist:
  47. rm -rf dist/
  48. mkdir -p dist/
  49. # Builds rpm and dep packages under ./dist folder. Accepts $VERSION env var.
  50. dist: clean-dist build
  51. @echo Generating VERSION=$(VERSION) rpm and deb packages under dist/
  52. nfpm pkg -t ./dist/ovpm.rpm
  53. nfpm pkg -t ./dist/ovpm.deb