ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

go 项目 makefile 编写模板

2022-04-05 12:01:21  阅读:185  来源: 互联网

标签:dist TARGET demo makefile build go SWAGGER 模板


常见的指令:

  • vendor
  • dev
  • start
  • demo
  • demo-start
  • dist
  • test
  • clean

如果支持 docker,则增加下列三个执行:

  • doker-build
  • docker-run
  • docker-upload

如果支持 swagger,则增加下列指令:

  • swagger: $(SWAG) $(SWAGGER_OUTPUT)
    总指令,包含下面两条指令
  • $(SWAGGER_OUTPUT)
    执行 swaggo 生成 swagger 文件
  • (SWAG)
    安装 swaggo

all 执行一般包含:dev demo dist docker-build

完整的实例:

PRJ  = mgsc
BIN  = yunju-api
 
MAIN    = sys/api/main.go
HANDLER = sys/api/web/handlers.go
 
SWAG           = $(shell go env GOPATH)/bin/swag
SWAGGER_DIR    = swagger
SWAGGER_DEPS   = $(MAIN) $(HANDLER)
SWAGGER_OUTPUT = $(SWAGGER_DIR)/docs.go $(SWAGGER_DIR)/swagger.json $(SWAGGER_DIR)/swagger.yaml
 
VERSION       := $(shell cat version.txt)
DOCKER_PATH   := r.addops.soft.360.cn/$(PRJ)/$(BIN)
DOCKER_PASSWD  = Wy7Nv3Nn
 
.PHONY: vendor dist test clean swagger
 
all: dev demo dist docker-build
 
vendor:
    git config --global url."ssh://git@git.corp.qihoo.net".insteadOf "https://git.corp.qihoo.net"
    go mod vendor
 
# dev
dev: TARGET=./build/dev/$(USER).$(BIN)
dev: vendor $(SWAGGER_OUTPUT)
    mkdir -p ./build/dev
    go build -mod=vendor -gcflags=all='-N -l' -o $(TARGET)  $(MAIN)
    ls -l $(TARGET)
    tools/init.sh dev
 
start: TARGET=./build/dev/$(USER).$(BIN)
start: dev
    $(TARGET) --config conf/config.$(USER).yaml --env dev
 
# demo
demo: TARGET=./build/demo/demo.$(BIN)
demo: vendor $(SWAGGER_OUTPUT)
    mkdir -p ./build/demo
    go build -mod=vendor -gcflags=all='-N -l' -o $(TARGET) $(MAIN)
    ls -l $(TARGET)
    tools/init.sh demo
 
demo-start: TARGET=./build/demo/demo.$(BIN)
demo-start: demo
    $(TARGET) --config conf/config.demo.yaml --env demo
 
# dist
dist: TARGET=./dist/$(BIN)
dist: vendor $(SWAGGER_OUTPUT)
    mkdir -p dist
    CGO_ENABLED=0 go build -mod=vendor -o $(TARGET)  $(MAIN)
    ls -l $(TARGET)
 
# docker
docker-build: dist
    docker build . --network host -t $(DOCKER_PATH)
    docker images | head -n2
 
docker-run:
    docker run -it $(DOCKER_PATH)
 
docker-upload:
    starkctl push -u $(PRJ) -p $(DOCKER_PASSWD) $(DOCKER_PATH)
 
# swagger
swagger: $(SWAG) $(SWAGGER_OUTPUT)
 
$(SWAGGER_OUTPUT): $(SWAGGER_DEPS)
    $(SWAG) init --parseDependency --parseDepth 2 -d sys/api/ -o $(SWAGGER_DIR)
 
$(SWAG):
    go get -u github.com/swaggo/swag/cmd/swag
    go mod vendor
 
# test
test: vendor
    go test $(TFLAG) ./tests/...
 
 
clean:
    # find . -path "./build/*" ! -name ".gitignore" -delete
    # find . -path "./dist/*"  ! -name ".gitignore" -delete
    rm -rfv build/* dist/* $(SWAGGER_OUTPUT)

标签:dist,TARGET,demo,makefile,build,go,SWAGGER,模板
来源: https://www.cnblogs.com/labs798/p/16101838.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有