go语言项目如何打包,makefile的脚本:
ifeq ($(shell uname), Darwin)
SED := gsed
else
SED := sed
endif
.PHONY: build
build:
make api && \
env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build && \
scp 项目名称 root@服务器ip:/data/项目路径
.PHONY: api
pb_path=../carku-public/proto
api:
mkdir -p ./pb && \
rm -rf ./pb/* && \
protoc --proto_path=$(GOPATH)/src/googleapis --proto_path=$(pb_path) \
--go-http_out=. --go-grpc_out=. --go_out=. \
$(pb_path)/base.proto \
$(pb_path)/order.data.proto \
$(pb_path)/common.proto \
$(pb_path)/common.data.proto \
$(pb_path)/das.data.proto \
$(pb_path)/dms.data.proto \
$(pb_path)/dms.proto \
$(pb_path)/lfs.data.proto \
$(pb_path)/mqttgateway.data.proto \
$(pb_path)/worker.enum.proto \
$(pb_path)/worker.data.proto \
$(pb_path)/worker.proto \
$(pb_path)/pay.data.proto \
$(pb_path)/pay.proto \
$(pb_path)/agent.api.data.proto \
$(pb_path)/agent.api.proto && \
protoc --proto_path=$(GOPATH)/src/googleapis --proto_path=$(pb_path) \
--openapi_out=fq_schema_naming=true,default_response=false:./pb \
$(pb_path)/base.proto \
$(pb_path)/order.data.proto \
$(pb_path)/common.data.proto \
$(pb_path)/das.data.proto \
$(pb_path)/dms.data.proto \
$(pb_path)/lfs.data.proto \
$(pb_path)/mqttgateway.data.proto \
$(pb_path)/worker.enum.proto \
$(pb_path)/worker.data.proto \
$(pb_path)/pay.data.proto \
$(pb_path)/agent.api.data.proto \
$(pb_path)/agent.api.proto && \
protoc-go-inject-tag -input=./pb/*.pb.go && \
$(SED) -i '/^.*summary.*$$/d' ./pb/openapi.yaml && \
$(SED) -E -i '/description:/ { N; /operationId:/ s/(^[[:space:]]*)description: (.*)\n\1([ ]*operationId:)/\1description: \2\n\1summary: \2\n\1\3/; }' ./pb/openapi.yaml
.PHONY: api-win
pb_path=../carku-public/proto
pb_path2=/c/msys64/ucrt64/include/googleapis
api-win:
mkdir -p ./pb && \
rm -rf ./pb/* && \
protoc --proto_path=$(pb_path) --proto_path=$(pb_path2) \
--go-http_out=. --go-grpc_out=. --go_out=. \
$(pb_path)/base.proto \
$(pb_path)/order.data.proto \
$(pb_path)/common.proto \
$(pb_path)/common.data.proto \
$(pb_path)/das.data.proto \
$(pb_path)/dms.data.proto \
$(pb_path)/dms.proto \
$(pb_path)/lfs.data.proto \
$(pb_path)/mqttgateway.data.proto \
$(pb_path)/worker.enum.proto \
$(pb_path)/worker.data.proto \
$(pb_path)/worker.proto \
$(pb_path)/pay.data.proto \
$(pb_path)/pay.proto \
$(pb_path)/agent.api.data.proto \
$(pb_path)/agent.api.proto && \
protoc --proto_path=$(pb_path) --proto_path=$(pb_path2) \
--openapi_out=fq_schema_naming=true,default_response=false:./pb \
$(pb_path)/base.proto \
$(pb_path)/order.data.proto \
$(pb_path)/common.data.proto \
$(pb_path)/das.data.proto \
$(pb_path)/dms.data.proto \
$(pb_path)/lfs.data.proto \
$(pb_path)/mqttgateway.data.proto \
$(pb_path)/worker.enum.proto \
$(pb_path)/worker.data.proto \
$(pb_path)/pay.data.proto \
$(pb_path)/agent.api.data.proto \
$(pb_path)/agent.api.proto && \
protoc-go-inject-tag -input=./pb/*.pb.go && \
$(SED) -i '/^.*summary.*$$/d' ./pb/openapi.yaml && \
$(SED) -E -i '/description:/ { N; /operationId:/ s/(^[[:space:]]*)description: (.*)\n\1([ ]*operationId:)/\1description: \2\n\1summary: \2\n\1\3/; }' ./pb/openapi.yaml