Initial euclide.org release
This commit is contained in:
88
Makefile
Normal file
88
Makefile
Normal file
@@ -0,0 +1,88 @@
|
||||
# -*- mode: makefile -*-
|
||||
SHELL := /bin/bash
|
||||
PREFIX?=$(shell pwd)
|
||||
|
||||
# Setup name variables for the package/tool
|
||||
PROJECTNAME := pdns-auth-proxy
|
||||
|
||||
# Set our default go compiler
|
||||
GO := go
|
||||
|
||||
VERSION := $(shell git describe --tags)
|
||||
GITCOMMIT := $(shell git rev-parse --short HEAD)
|
||||
PKG := git.euclide.org/euclide/$(PROJECTNAME)
|
||||
|
||||
CTIMEVAR=-X $(PKG)/version.GITCOMMIT=$(GITCOMMIT) -X $(PKG)/version.VERSION=$(VERSION)
|
||||
GO_LDFLAGS=-ldflags "-w $(CTIMEVAR)"
|
||||
GO_LDFLAGS_STATIC=-ldflags "-w $(CTIMEVAR) -extldflags -static"
|
||||
GOCACHE=off
|
||||
|
||||
BUILDDIR := ${PREFIX}/build
|
||||
DOCKER_IMAGE := $(docker images --format "{{.Repository}}" --filter=reference='$(PROJECTNAME):$(GITCOMMIT)')
|
||||
GOOSARCHES := linux/amd64
|
||||
|
||||
all: build fmt lint test
|
||||
|
||||
.PHONY: fmt
|
||||
fmt: ## Verifies all files have been `gofmt`ed.
|
||||
@echo "+ $@"
|
||||
$(eval var = $(shell gofmt -s -l . | grep -v vendor | tee /dev/stderr))
|
||||
@if [ ! -z "${var}" ]; then exit 1; fi
|
||||
$(MAKE) -C client fmt
|
||||
|
||||
.PHONY: lint
|
||||
lint: ## Verifies `golint` passes.
|
||||
@echo "+ $@"
|
||||
$(eval var = $(shell golint ./... | grep -v vendor | tee /dev/stderr))
|
||||
@if [ ! -z "${var}" ]; then exit 1; fi
|
||||
$(MAKE) -C client lint
|
||||
|
||||
.PHONY: tag
|
||||
tag: ## Create a new git tag to prepare to build a release
|
||||
git tag -sa $(VERSION) -m "$(VERSION)"
|
||||
@echo "Run git push origin $(VERSION) to push your new tag to GitHub and trigger a Jenkins build."
|
||||
|
||||
.PHONY: test
|
||||
test: ## Generates test certificates & run unit tests.
|
||||
$(MAKE) -C fixtures/test
|
||||
go vet -mod=vendor
|
||||
go test -v -mod=vendor -coverprofile=coverage.out
|
||||
$(MAKE) -C client test
|
||||
|
||||
.PHONY: resetreplay
|
||||
resetreplay:
|
||||
rm -f fixtures/replay/record
|
||||
$(MAKE) clean
|
||||
$(MAKE) test
|
||||
|
||||
.PHONY: deb
|
||||
deb:
|
||||
debuild -e GOROOT -e PATH -i -us -uc -b
|
||||
|
||||
.PHONY: build
|
||||
build: ## Builds a static executable.
|
||||
@echo "+ $@"
|
||||
CGO_ENABLED=0 $(GO) build -mod=vendor \
|
||||
-o $(PROJECTNAME) \
|
||||
-tags "static_build netgo" \
|
||||
-trimpath \
|
||||
-installsuffix netgo ${GO_LDFLAGS_STATIC} .;
|
||||
strip $(PROJECTNAME) 2>/dev/null || echo
|
||||
$(MAKE) -C client build
|
||||
|
||||
.PHONY: vendor
|
||||
vendor: ## Updates the vendoring directory.
|
||||
# @$(RM) go.sum
|
||||
@$(RM) -r vendor
|
||||
GOPRIVATE=git.euclide.org $(GO) mod init $(PKG) || true
|
||||
GOPRIVATE=git.euclide.org $(GO) mod tidy
|
||||
GOPRIVATE=git.euclide.org $(GO) mod vendor
|
||||
@$(RM) Gopkg.toml Gopkg.lock
|
||||
|
||||
.PHONY: clean
|
||||
clean: ## Cleanup any build binaries or packages.
|
||||
@echo "+ $@"
|
||||
$(RM) $(PROJECTNAME) debug
|
||||
$(RM) -r $(BUILDDIR)
|
||||
$(MAKE) -C fixtures/test clean
|
||||
$(MAKE) -C client clean
|
||||
Reference in New Issue
Block a user