2020-11-10 08:31:02 +00:00
|
|
|
# Go parameters
|
|
|
|
GOCMD=go
|
|
|
|
MODULENAME=github.com/h44z/wg-portal
|
|
|
|
GOFILES:=$(shell go list ./... | grep -v /vendor/)
|
|
|
|
BUILDDIR=dist
|
|
|
|
BINARIES=$(subst cmd/,,$(wildcard cmd/*))
|
2020-11-10 10:06:04 +00:00
|
|
|
IMAGE=h44z/wg-portal
|
2020-11-10 08:31:02 +00:00
|
|
|
|
|
|
|
.PHONY: all test clean phony
|
|
|
|
|
2020-12-17 15:10:05 +00:00
|
|
|
all: dep build
|
2020-11-10 08:31:02 +00:00
|
|
|
|
2021-02-24 21:52:19 +00:00
|
|
|
build: dep $(addsuffix -amd64,$(addprefix $(BUILDDIR)/,$(BINARIES)))
|
|
|
|
cp scripts/wg-portal.service $(BUILDDIR)
|
|
|
|
cp scripts/wg-portal.env $(BUILDDIR)
|
|
|
|
|
|
|
|
build-cross-plat: dep build $(addsuffix -arm,$(addprefix $(BUILDDIR)/,$(BINARIES))) $(addsuffix -arm64,$(addprefix $(BUILDDIR)/,$(BINARIES)))
|
2020-12-17 15:10:05 +00:00
|
|
|
cp scripts/wg-portal.service $(BUILDDIR)
|
|
|
|
cp scripts/wg-portal.env $(BUILDDIR)
|
2020-11-10 08:31:02 +00:00
|
|
|
|
2021-04-08 07:23:48 +00:00
|
|
|
build-docker: dep
|
2021-04-08 16:37:49 +00:00
|
|
|
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 $(GOCMD) build -o $(BUILDDIR)/wgportal -ldflags "-w -s -linkmode external -extldflags \"-static\" -X github.com/h44z/wg-portal/internal/server.Version=${ENV_BUILD_IDENTIFIER}-${ENV_BUILD_VERSION}" -tags netgo cmd/wg-portal/main.go
|
2021-04-08 07:23:48 +00:00
|
|
|
|
2020-11-10 08:31:02 +00:00
|
|
|
dep:
|
|
|
|
$(GOCMD) mod download
|
|
|
|
|
2020-11-10 10:06:04 +00:00
|
|
|
validate: dep
|
2020-11-10 08:31:02 +00:00
|
|
|
$(GOCMD) fmt $(GOFILES)
|
|
|
|
$(GOCMD) vet $(GOFILES)
|
|
|
|
$(GOCMD) test -race $(GOFILES)
|
|
|
|
|
2020-11-10 10:06:04 +00:00
|
|
|
coverage: dep
|
2020-11-10 08:31:02 +00:00
|
|
|
$(GOCMD) fmt $(GOFILES)
|
|
|
|
$(GOCMD) test $(GOFILES) -v -coverprofile .testCoverage.txt
|
|
|
|
$(GOCMD) tool cover -func=.testCoverage.txt # use total:\s+\(statements\)\s+(\d+.\d+\%) as Gitlab CI regextotal:\s+\(statements\)\s+(\d+.\d+\%)
|
|
|
|
|
|
|
|
coverage-html: coverage
|
|
|
|
$(GOCMD) tool cover -html=.testCoverage.txt
|
|
|
|
|
2020-11-10 10:06:04 +00:00
|
|
|
test: dep
|
2020-11-10 08:31:02 +00:00
|
|
|
$(GOCMD) test $(MODULENAME)/... -v -count=1
|
|
|
|
|
|
|
|
clean:
|
|
|
|
$(GOCMD) clean $(GOFILES)
|
|
|
|
rm -rf .testCoverage.txt
|
|
|
|
rm -rf $(BUILDDIR)
|
|
|
|
|
2020-11-10 10:06:04 +00:00
|
|
|
docker-build:
|
|
|
|
docker build -t $(IMAGE) .
|
|
|
|
|
|
|
|
docker-push:
|
|
|
|
docker push $(IMAGE)
|
|
|
|
|
2021-04-26 12:40:49 +00:00
|
|
|
api-docs:
|
2021-09-27 18:28:03 +00:00
|
|
|
cd internal/server; swag init --propertyStrategy pascalcase --parseDependency --parseInternal --generalInfo api.go
|
2021-04-26 12:40:49 +00:00
|
|
|
$(GOCMD) fmt internal/server/docs/docs.go
|
|
|
|
|
2020-12-17 15:23:55 +00:00
|
|
|
$(BUILDDIR)/%-amd64: cmd/%/main.go dep phony
|
2021-04-08 19:30:16 +00:00
|
|
|
GOOS=linux GOARCH=amd64 $(GOCMD) build -ldflags "-X github.com/h44z/wg-portal/internal/server.Version=${ENV_BUILD_IDENTIFIER}-${ENV_BUILD_VERSION}" -o $@ $<
|
2020-12-17 15:23:55 +00:00
|
|
|
|
|
|
|
# On arch-linux install aarch64-linux-gnu-gcc to crosscompile for arm64
|
|
|
|
$(BUILDDIR)/%-arm64: cmd/%/main.go dep phony
|
2021-04-08 19:30:16 +00:00
|
|
|
CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc GOOS=linux GOARCH=arm64 $(GOCMD) build -ldflags "-linkmode external -extldflags \"-static\" -X github.com/h44z/wg-portal/internal/server.Version=${ENV_BUILD_IDENTIFIER}-${ENV_BUILD_VERSION}" -o $@ $<
|
2020-12-17 15:23:55 +00:00
|
|
|
|
|
|
|
# On arch-linux install arm-linux-gnueabihf-gcc to crosscompile for arm
|
|
|
|
$(BUILDDIR)/%-arm: cmd/%/main.go dep phony
|
2021-04-08 19:30:16 +00:00
|
|
|
CGO_ENABLED=1 CC=arm-linux-gnueabi-gcc GOOS=linux GOARCH=arm GOARM=7 $(GOCMD) build -ldflags "-linkmode external -extldflags \"-static\" -X github.com/h44z/wg-portal/internal/server.Version=${ENV_BUILD_IDENTIFIER}-${ENV_BUILD_VERSION}" -o $@ $<
|