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
 | ||
|  | 
 | ||
|  | 	) |