2024-01-15 12:06:13 +13:00
|
|
|
|
|
|
|
|
.PHONY: build build-alpine clean test help default
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BIN_NAME=directdnsonly
|
|
|
|
|
|
|
|
|
|
VERSION := $(shell grep "const Version " version/version.go | sed -E 's/.*"(.+)"$$/\1/')
|
|
|
|
|
GIT_COMMIT=$(shell git rev-parse HEAD)
|
|
|
|
|
GIT_DIRTY=$(shell test -n "`git status --porcelain`" && echo "+CHANGES" || true)
|
|
|
|
|
BUILD_DATE=$(shell date '+%Y-%m-%d-%H:%M:%S')
|
|
|
|
|
IMAGE_NAME := "guisea/directdnsonly"
|
|
|
|
|
|
|
|
|
|
default: test
|
|
|
|
|
|
|
|
|
|
help:
|
|
|
|
|
@echo 'Management commands for directdnsonly:'
|
|
|
|
|
@echo
|
|
|
|
|
@echo 'Usage:'
|
|
|
|
|
@echo ' make build Compile the project.'
|
|
|
|
|
@echo ' make get-deps runs dep ensure, mostly used for ci.'
|
|
|
|
|
@echo ' make build-alpine Compile optimized for alpine linux.'
|
|
|
|
|
@echo ' make package Build final docker image with just the go binary inside'
|
|
|
|
|
@echo ' make tag Tag image created by package with latest, git commit and version'
|
|
|
|
|
@echo ' make test Run tests on a compiled project.'
|
|
|
|
|
@echo ' make push Push tagged images to registry'
|
|
|
|
|
@echo ' make clean Clean the directory tree.'
|
|
|
|
|
@echo
|
|
|
|
|
|
|
|
|
|
build:
|
|
|
|
|
@echo "building ${BIN_NAME} ${VERSION}"
|
|
|
|
|
@echo "GOPATH=${GOPATH}"
|
2024-01-17 15:56:44 +13:00
|
|
|
go build -o bin/directdnsonly -ldflags "-X github.com/guisea/directdnsonly/version.GitCommit=196e17cd2963ed5724cf76c29c491a17f44b48de+CHANGES -X github.com/guisea/directdnsonly/version.BuildDate=${BUILD_DATE}" cmd/directdnsonly/main.go
|
2024-01-15 12:06:13 +13:00
|
|
|
|
|
|
|
|
get-deps:
|
|
|
|
|
dep ensure
|
|
|
|
|
|
|
|
|
|
build-alpine:
|
|
|
|
|
@echo "building ${BIN_NAME} ${VERSION}"
|
|
|
|
|
@echo "GOPATH=${GOPATH}"
|
|
|
|
|
go build -ldflags '-w -linkmode external -extldflags "-static" -X github.com/guisea/directdnsonly/version.GitCommit=${GIT_COMMIT}${GIT_DIRTY} -X github.com/guisea/directdnsonly/version.BuildDate=${BUILD_DATE}' -o bin/${BIN_NAME}
|
|
|
|
|
|
|
|
|
|
package:
|
|
|
|
|
@echo "building image ${BIN_NAME} ${VERSION} $(GIT_COMMIT)"
|
|
|
|
|
docker build --build-arg VERSION=${VERSION} --build-arg GIT_COMMIT=$(GIT_COMMIT) -t $(IMAGE_NAME):local .
|
|
|
|
|
|
|
|
|
|
tag:
|
|
|
|
|
@echo "Tagging: latest ${VERSION} $(GIT_COMMIT)"
|
|
|
|
|
docker tag $(IMAGE_NAME):local $(IMAGE_NAME):$(GIT_COMMIT)
|
|
|
|
|
docker tag $(IMAGE_NAME):local $(IMAGE_NAME):${VERSION}
|
|
|
|
|
docker tag $(IMAGE_NAME):local $(IMAGE_NAME):latest
|
|
|
|
|
|
|
|
|
|
push: tag
|
|
|
|
|
@echo "Pushing docker image to registry: latest ${VERSION} $(GIT_COMMIT)"
|
|
|
|
|
docker push $(IMAGE_NAME):$(GIT_COMMIT)
|
|
|
|
|
docker push $(IMAGE_NAME):${VERSION}
|
|
|
|
|
docker push $(IMAGE_NAME):latest
|
|
|
|
|
|
|
|
|
|
clean:
|
|
|
|
|
@test ! -e bin/${BIN_NAME} || rm bin/${BIN_NAME}
|
|
|
|
|
|
|
|
|
|
test:
|
|
|
|
|
go test ./...
|
|
|
|
|
|