2021-04-25 14:21:04 +00:00
|
|
|
# Calculate version
|
2022-06-12 09:01:17 +00:00
|
|
|
version ?= $(shell git describe --always --tags --dirty)
|
2021-04-25 14:21:04 +00:00
|
|
|
|
2021-11-13 08:39:20 +00:00
|
|
|
rwildcard=$(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))
|
|
|
|
|
2022-06-04 10:11:10 +00:00
|
|
|
# Determine if OS supports pie
|
|
|
|
GOOS ?= $(shell uname | tr '[:upper:]' '[:lower:]')
|
|
|
|
ifeq ($(filter $(GOOS), openbsd netbsd soloaris plan9), )
|
|
|
|
pieflags = -buildmode=pie
|
|
|
|
else
|
|
|
|
endif
|
|
|
|
|
2021-11-13 08:39:20 +00:00
|
|
|
# GO_SOURCES = $(wildcard *.go)
|
|
|
|
# PROTO_SOURCES = $(wildcard **/*.proto)
|
|
|
|
GO_SOURCES = $(call rwildcard,,*.go)
|
|
|
|
PROTO_SOURCES = $(call rwildcard,,*.proto)
|
|
|
|
|
|
|
|
|
2021-10-27 06:48:30 +00:00
|
|
|
build:
|
2022-06-04 10:11:10 +00:00
|
|
|
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
|
2021-04-25 14:21:04 +00:00
|
|
|
|
|
|
|
dev: lint test build
|
|
|
|
|
|
|
|
test:
|
2022-10-18 12:45:18 +00:00
|
|
|
@go test -short -coverprofile=coverage.out ./...
|
2021-04-25 14:21:04 +00:00
|
|
|
|
2022-10-28 13:21:11 +00:00
|
|
|
test_integration: test_integration_cli test_integration_derp test_integration_oidc test_integration_v2_general
|
2021-08-08 16:50:32 +00:00
|
|
|
|
2021-11-26 23:34:11 +00:00
|
|
|
test_integration_cli:
|
2022-10-07 11:23:40 +00:00
|
|
|
docker network rm $$(docker network ls --filter name=headscale --quiet) || true
|
|
|
|
docker network create headscale-test || true
|
|
|
|
docker run -t --rm \
|
|
|
|
--network headscale-test \
|
2022-10-18 12:41:20 +00:00
|
|
|
-v ~/.cache/hs-integration-go:/go \
|
2022-10-07 11:23:40 +00:00
|
|
|
-v $$PWD:$$PWD -w $$PWD \
|
|
|
|
-v /var/run/docker.sock:/var/run/docker.sock golang:1 \
|
2022-10-18 12:41:48 +00:00
|
|
|
go test -failfast -timeout 30m -count=1 -run IntegrationCLI ./...
|
2021-11-26 23:34:11 +00:00
|
|
|
|
2022-03-05 18:34:06 +00:00
|
|
|
test_integration_derp:
|
2022-10-07 11:23:40 +00:00
|
|
|
docker network rm $$(docker network ls --filter name=headscale --quiet) || true
|
|
|
|
docker network create headscale-test || true
|
|
|
|
docker run -t --rm \
|
|
|
|
--network headscale-test \
|
2022-10-18 12:41:20 +00:00
|
|
|
-v ~/.cache/hs-integration-go:/go \
|
2022-10-07 11:23:40 +00:00
|
|
|
-v $$PWD:$$PWD -w $$PWD \
|
|
|
|
-v /var/run/docker.sock:/var/run/docker.sock golang:1 \
|
2022-10-18 12:41:48 +00:00
|
|
|
go test -failfast -timeout 30m -count=1 -run IntegrationDERP ./...
|
2022-08-09 10:26:29 +00:00
|
|
|
|
2022-09-08 17:48:27 +00:00
|
|
|
test_integration_oidc:
|
2022-10-07 08:45:23 +00:00
|
|
|
docker network rm $$(docker network ls --filter name=headscale --quiet) || true
|
|
|
|
docker network create headscale-test || true
|
2022-10-07 11:23:40 +00:00
|
|
|
docker run -t --rm \
|
|
|
|
--network headscale-test \
|
2022-10-18 12:41:20 +00:00
|
|
|
-v ~/.cache/hs-integration-go:/go \
|
2022-10-07 11:23:40 +00:00
|
|
|
-v $$PWD:$$PWD -w $$PWD \
|
|
|
|
-v /var/run/docker.sock:/var/run/docker.sock golang:1 \
|
2022-10-18 12:41:48 +00:00
|
|
|
go test -failfast -timeout 30m -count=1 -run IntegrationOIDC ./...
|
2022-09-08 17:48:27 +00:00
|
|
|
|
2022-10-18 10:03:51 +00:00
|
|
|
test_integration_v2_general:
|
|
|
|
docker run \
|
2022-10-18 10:09:57 +00:00
|
|
|
-t --rm \
|
2022-10-18 10:03:51 +00:00
|
|
|
-v ~/.cache/hs-integration-go:/go \
|
|
|
|
--name headscale-test-suite \
|
2022-10-18 14:00:24 +00:00
|
|
|
-v $$PWD:$$PWD -w $$PWD/integration \
|
2022-10-18 10:03:51 +00:00
|
|
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
|
|
|
golang:1 \
|
2022-11-03 10:58:16 +00:00
|
|
|
go test ./... -timeout 60m -parallel 6
|
2022-10-18 10:03:51 +00:00
|
|
|
|
2021-04-25 14:21:04 +00:00
|
|
|
coverprofile_func:
|
|
|
|
go tool cover -func=coverage.out
|
|
|
|
|
|
|
|
coverprofile_html:
|
|
|
|
go tool cover -html=coverage.out
|
|
|
|
|
|
|
|
lint:
|
2021-11-13 08:39:20 +00:00
|
|
|
golangci-lint run --fix --timeout 10m
|
|
|
|
|
|
|
|
fmt:
|
2021-11-13 09:20:51 +00:00
|
|
|
prettier --write '**/**.{ts,js,md,yaml,yml,sass,css,scss,html}'
|
2021-11-13 08:39:20 +00:00
|
|
|
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)
|
2021-04-25 14:21:04 +00:00
|
|
|
|
2021-10-29 16:42:56 +00:00
|
|
|
proto-lint:
|
2022-04-21 18:23:21 +00:00
|
|
|
cd proto/ && go run github.com/bufbuild/buf/cmd/buf lint
|
2021-10-29 16:42:56 +00:00
|
|
|
|
2021-04-25 14:21:04 +00:00
|
|
|
compress: build
|
2021-05-02 18:47:36 +00:00
|
|
|
upx --brute headscale
|
2021-04-25 14:21:04 +00:00
|
|
|
|
2021-10-26 20:53:10 +00:00
|
|
|
generate:
|
|
|
|
rm -rf gen
|
2022-04-21 18:23:21 +00:00
|
|
|
go run github.com/bufbuild/buf/cmd/buf generate proto
|
2021-10-27 06:40:39 +00:00
|
|
|
|
|
|
|
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
|