Advertisement
Guest User

Untitled

a guest
Oct 14th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.12 KB | None | 0 0
  1. timestamp = $(shell /bin/date "+%F %T")
  2. goos = linux
  3. goarch = amd64
  4. bin = $(CURDIR)/bin/snowflake-$(goos)-$(goarch)
  5. gofiles = `find $(CURDIR) -name "*.go" -type f -not -path "$(CURDIR)/src/vendor/*"`
  6. packages = `go list $(CURDIR)/... | grep -v /vendor/`
  7. docker-image-tag = quay.io/yingzhuo/snowflake:latest
  8. docker-build-context = $(CURDIR)/bin/
  9.  
  10. # 菜单
  11. usage:
  12. @echo "------------------------------------------"
  13. @echo " 目标 | 功能"
  14. @echo "------------------------------------------"
  15. @echo " usage | 显示本菜单"
  16. @echo " fmt-check | 格式化检查"
  17. @echo " fmt | 格式化代码"
  18. @echo " ls-pkg | 列出所有包"
  19. @echo " ls-go | 列出所有Go文件"
  20. @echo " clean | 清理构建产物"
  21. @echo " compile | 编译源码"
  22. @echo " build-image | 构建Docker镜像"
  23. @echo " push-image | 推送Docker镜像"
  24. @echo " push-code | 将代码推送到Github"
  25. @echo "------------------------------------------"
  26.  
  27. # 列出所有包
  28. ls-pkg:
  29. @echo $(packages)
  30.  
  31. # 列出所有go文件
  32. ls-go:
  33. @echo $(gofiles)
  34.  
  35. # 格式化检查
  36. fmt-check:
  37. @diff=$$(gofmt -s -d $(gofiles)); \
  38. if [ -n "$$diff" ]; then \
  39. echo "请运行 'make fmt' :"; \
  40. echo "$${diff}"; \
  41. exit 1; \
  42. fi;
  43.  
  44. # 格式化代码
  45. fmt:
  46. @gofmt -s -w $(gofiles)
  47.  
  48. # 清理
  49. clean:
  50. @rm -rf $(bin) &> /dev/null || true
  51. @docker image rm $(docker-image-tag) &> /dev/null || true
  52. @docker image prune -f &> /dev/null
  53.  
  54. # 编译
  55. compile: clean fmt
  56. GOOS=$(goos) GOARCH=$(goarch) go build -o $(bin) github.com/yingzhuo/main
  57.  
  58. # 构建docker镜像
  59. build-image: compile
  60. docker image build -t $(docker-image-tag) $(docker-build-context)
  61.  
  62. # 推送镜像到仓库
  63. push-image: build-image
  64. @cat $(CURDIR)/.github/quay.io.pwd | docker login --username=yingzhuo --password-stdin quay.io
  65. docker image push $(docker-image-tag)
  66. @docker logout quay.io &> /dev/null
  67.  
  68. # 推送源代码
  69. push-code: clean fmt
  70. git add .
  71. git commit -m "$(timestamp)"
  72. git push
  73.  
  74. .PHONY: usage fmt fmt-check ls-go ls-pkg compile build-image push-image clean push-code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement