105 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
			
		
		
	
	
			105 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
| .PHONY: help test-race lint sec-scan gci-format db-mysql-init docker-image-build db-mysql-down generate
 | |
| 
 | |
| help: ## show how tot use this tools
 | |
| 	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z0-9_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf "\033[36m%-25s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
 | |
| 
 | |
| PROJECT_NAME?=member
 | |
| 
 | |
| ########
 | |
| # test #
 | |
| ########
 | |
| 
 | |
| test-race: ## launch all tests with race detection
 | |
| 	go test ./... -cover -race
 | |
| 
 | |
| ########
 | |
| # lint #
 | |
| ########
 | |
| 
 | |
| lint: ## lints the entire codebase
 | |
| 	@golangci-lint run ./... --config=./.golangci.yaml
 | |
| 
 | |
| #######
 | |
| # sec #
 | |
| #######
 | |
| 
 | |
| sec-scan: trivy-scan vuln-scan ## scan for security and vulnerability issues
 | |
| 
 | |
| trivy-scan: ## scan for sec issues with trivy (trivy binary needed)
 | |
| 	trivy fs --exit-code 1 --no-progress --severity CRITICAL ./
 | |
| 
 | |
| vuln-scan: ## scan for vulnerability issues with govulncheck (govulncheck binary needed)
 | |
| 	govulncheck ./...
 | |
| 
 | |
| ######
 | |
| # db #
 | |
| ######
 | |
| MYSQL_SQL_PATH="./database/migrations/mysql"
 | |
| 
 | |
| db-mysql-init:
 | |
| 	@( \
 | |
| 	printf "Enter migrate name: "; read -r MIGRATE_NAME && \
 | |
| 	migrate create -ext sql -dir ${MYSQL_SQL_PATH} $${MIGRATE_NAME} \
 | |
| 	)
 | |
| 
 | |
| db-mysql-up:
 | |
| 	@( \
 | |
| 	printf "Enter pass for db: \n"; read -rs DB_PASSWORD && \
 | |
| 	printf "Enter port(3306...): \n"; read -r DB_PORT &&\
 | |
| 	migrate --database "mysql://root:$${DB_PASSWORD}@tcp(localhost:$${DB_PORT})/$(PROJECT_NAME)?charset=utf8&parseTime=True&loc=Local" --path ${MYSQL_SQL_PATH} up \
 | |
| 	)
 | |
| 
 | |
| db-mysql-down:
 | |
| 	@( \
 | |
| 	printf "Enter pass for db: \n"; read -s DB_PASSWORD && \
 | |
| 	printf "Enter port(3306...): \n"; read -r DB_PORT &&\
 | |
| 	migrate --database "mysql://root:$${DB_PASSWORD}@tcp(localhost:$${DB_PORT})/$(PROJECT_NAME)?charset=utf8&parseTime=True&loc=Local" --path ${MYSQL_SQL_PATH} down \
 | |
| 	)
 | |
| 
 | |
| SQL_FILE_TIMESTAMP=$(shell date '+%Y%m%d%H%M%S')
 | |
| 
 | |
| gen-migrate-sql:
 | |
| 	@( \
 | |
| 	printf "Enter file name: "; read -r FILE_NAME; \
 | |
| 	touch database/migrations/mysql/$(SQL_FILE_TIMESTAMP)_$$FILE_NAME.up.sql; \
 | |
| 	touch database/migrations/mysql/$(SQL_FILE_TIMESTAMP)_$$FILE_NAME.down.sql; \
 | |
| 	)
 | |
| 
 | |
| ###########
 | |
| #   GCI   #
 | |
| ###########
 | |
| gci-format:
 | |
| 	gci write --skip-generated -s standard -s default -s "prefix(yt.com/backend)" -s "prefix($(PROJECT_NAME))" ./
 | |
| 
 | |
| #########
 | |
| # build #
 | |
| #########
 | |
| 
 | |
| GitCommit=$(shell git rev-parse HEAD)
 | |
| Date=$(shell date -Iseconds)
 | |
| 
 | |
| build:
 | |
| 	@( \
 | |
| 	printf "Enter file name: "; read -r VERSION; \
 | |
| 	go build -ldflags "-s -w -X 'main.Version=$$VERSION' -X 'main.Built=$(Date)' -X 'main.GitCommit=$(GitCommit)'" -o ./bin/$(PROJECT_NAME) ./cmd/$(PROJECT_NAME) \
 | |
| 	)
 | |
| 
 | |
| docker-image-build:
 | |
| 	docker build \
 | |
| 		-f ./build/Dockerfile \
 | |
| 		-t $(PROJECT_NAME) \
 | |
| 		--platform linux/amd64 \
 | |
| 		--build-arg BUILT=$(Date) \
 | |
|         --build-arg GIT_COMMIT=$(GitCommit) \
 | |
|         --ssh default=$$HOME/.ssh/id_rsa \
 | |
| 		./
 | |
| 
 | |
| generate:
 | |
| 	@( \
 | |
| 	printf "Generate protobuf .... "; \
 | |
| #	goctl rpc protoc ./generate/protobuf/member.proto --style=go_zero --go_out=./gen_result/pb --go-grpc_out=./gen_result/pb --zrpc_out=. \
 | |
| #	printf "Generate docker .... "; \
 | |
| #	goctl docker --go member.go --exe member --version 1.22 --tz Asia/Taipei --remote code.30cm.net --base gcr.io/distroless/static-debian12
 | |
| #	goctl model mysql ddl -c yes -s ./generate/database/mysql/20230529020011_account_uid_table.up.sql --style go_zero -d ./internal/model
 | |
| 
 | |
| 	)
 |