mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-28 10:51:44 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			109 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
| # Calculate version
 | |
| version ?= $(shell git describe --always --tags --dirty)
 | |
| 
 | |
| rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
 | |
| 
 | |
| # Determine if OS supports pie
 | |
| GOOS ?= $(shell uname | tr '[:upper:]' '[:lower:]')
 | |
| ifeq ($(filter $(GOOS), openbsd netbsd soloaris plan9), )
 | |
| 	pieflags = -buildmode=pie
 | |
| else
 | |
| endif
 | |
| 
 | |
| # GO_SOURCES = $(wildcard *.go)
 | |
| # PROTO_SOURCES = $(wildcard **/*.proto)
 | |
| GO_SOURCES = $(call rwildcard,,*.go)
 | |
| PROTO_SOURCES = $(call rwildcard,,*.proto)
 | |
| 
 | |
| 
 | |
| build:
 | |
| 	GOOS=$(GOOS) CGO_ENABLED=0 go build -trimpath $(pieflags) -mod=readonly -ldflags "-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$(version)" cmd/headscale/headscale.go
 | |
| 
 | |
| dev: lint test build
 | |
| 
 | |
| test:
 | |
| 	@go test -short -coverprofile=coverage.out ./...
 | |
| 
 | |
| test_integration: test_integration_cli test_integration_derp test_integration_oidc test_integration_general
 | |
| 
 | |
| test_integration_cli:
 | |
| 	docker network rm $$(docker network ls --filter name=headscale --quiet) || true
 | |
| 	docker network create headscale-test || true
 | |
| 	docker run -t --rm \
 | |
| 		--network headscale-test \
 | |
| 		-v ~/.cache/hs-integration-go:/go \
 | |
| 		-v $$PWD:$$PWD -w $$PWD \
 | |
| 		-v /var/run/docker.sock:/var/run/docker.sock golang:1 \
 | |
| 		go test -failfast -timeout 30m -count=1 -run IntegrationCLI ./...
 | |
| 
 | |
| test_integration_derp:
 | |
| 	docker network rm $$(docker network ls --filter name=headscale --quiet) || true
 | |
| 	docker network create headscale-test || true
 | |
| 	docker run -t --rm \
 | |
| 		--network headscale-test \
 | |
| 		-v ~/.cache/hs-integration-go:/go \
 | |
| 		-v $$PWD:$$PWD -w $$PWD \
 | |
| 		-v /var/run/docker.sock:/var/run/docker.sock golang:1 \
 | |
| 		go test -failfast -timeout 30m -count=1 -run IntegrationDERP ./...
 | |
| 
 | |
| test_integration_general:
 | |
| 	docker network rm $$(docker network ls --filter name=headscale --quiet) || true
 | |
| 	docker network create headscale-test || true
 | |
| 	docker run -t --rm \
 | |
| 		--network headscale-test \
 | |
| 		-v ~/.cache/hs-integration-go:/go \
 | |
| 		-v $$PWD:$$PWD -w $$PWD \
 | |
| 		-v /var/run/docker.sock:/var/run/docker.sock golang:1 \
 | |
| 		go test -failfast -timeout 30m -count=1 -run IntegrationGeneral ./...
 | |
| 
 | |
| test_integration_oidc:
 | |
| 	docker network rm $$(docker network ls --filter name=headscale --quiet) || true
 | |
| 	docker network create headscale-test || true
 | |
| 	docker run -t --rm \
 | |
| 		--network headscale-test \
 | |
| 		-v ~/.cache/hs-integration-go:/go \
 | |
| 		-v $$PWD:$$PWD -w $$PWD \
 | |
| 		-v /var/run/docker.sock:/var/run/docker.sock golang:1 \
 | |
| 		go test -failfast -timeout 30m -count=1 -run IntegrationOIDC ./...
 | |
| 
 | |
| test_integration_v2_general:
 | |
| 	docker run \
 | |
| 		-t --rm \
 | |
| 		-v ~/.cache/hs-integration-go:/go \
 | |
| 		--name headscale-test-suite \
 | |
| 		-v $$PWD:$$PWD -w $$PWD/integration \
 | |
| 		-v /var/run/docker.sock:/var/run/docker.sock \
 | |
| 		golang:1 \
 | |
| 		go test ./... -timeout 15m -v
 | |
| 
 | |
| coverprofile_func:
 | |
| 	go tool cover -func=coverage.out
 | |
| 
 | |
| coverprofile_html:
 | |
| 	go tool cover -html=coverage.out
 | |
| 
 | |
| lint:
 | |
| 	golangci-lint run --fix --timeout 10m
 | |
| 
 | |
| fmt:
 | |
| 	prettier --write '**/**.{ts,js,md,yaml,yml,sass,css,scss,html}'
 | |
| 	golines --max-len=88 --base-formatter=gofumpt -w $(GO_SOURCES)
 | |
| 	clang-format -style="{BasedOnStyle: Google, IndentWidth: 4, AlignConsecutiveDeclarations: true, AlignConsecutiveAssignments: true, ColumnLimit: 0}" -i $(PROTO_SOURCES)
 | |
| 
 | |
| proto-lint:
 | |
| 	cd proto/ && go run github.com/bufbuild/buf/cmd/buf lint
 | |
| 
 | |
| compress: build
 | |
| 	upx --brute headscale
 | |
| 
 | |
| generate:
 | |
| 	rm -rf gen
 | |
| 	go run github.com/bufbuild/buf/cmd/buf generate proto
 | |
| 
 | |
| install-protobuf-plugins:
 | |
| 	go install \
 | |
| 		github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \
 | |
| 		github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \
 | |
| 		google.golang.org/protobuf/cmd/protoc-gen-go \
 | |
| 		google.golang.org/grpc/cmd/protoc-gen-go-grpc
 |