You've already forked getpsrc
							
							
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# VERSION
 | 
						|
VERSION?=$(shell git describe --abbrev=0)+hash.$(shell git rev-parse --short HEAD)
 | 
						|
 | 
						|
# CONTAINER_RUNTIME
 | 
						|
CONTAINER_RUNTIME?=$(shell which podman)
 | 
						|
 | 
						|
# CONTAINER_IMAGE
 | 
						|
CONTAINER_IMAGE_REGISTRY_HOST?=git.cryptic.systems
 | 
						|
CONTAINER_IMAGE_REPOSITORY=volker.raschek/getpsrc
 | 
						|
CONTAINER_IMAGE_VERSION?=latest
 | 
						|
CONTAINER_IMAGE_FULLY_QUALIFIED=${CONTAINER_IMAGE_REGISTRY_HOST}/${CONTAINER_IMAGE_REPOSITORY}:${CONTAINER_IMAGE_VERSION}
 | 
						|
 | 
						|
# EXECUTABLES
 | 
						|
# ==============================================================================
 | 
						|
EXECUTABLE_TARGETS=getpsrc
 | 
						|
 | 
						|
PHONY=all
 | 
						|
all: clean ${EXECUTABLE_TARGETS}
 | 
						|
 | 
						|
getpsrc:
 | 
						|
	go build -tags netgo -ldflags "-X main.version=${VERSION}" -o ${@} main.go
 | 
						|
 | 
						|
 | 
						|
# CLEAN
 | 
						|
# ==============================================================================
 | 
						|
PHONY+=clean
 | 
						|
clean:
 | 
						|
	rm -f -r $(shell pwd)/getpsrc*
 | 
						|
 | 
						|
# TESTS
 | 
						|
# ==============================================================================
 | 
						|
PHONY+=test/unit
 | 
						|
test/unit:
 | 
						|
	CGO_ENABLED=0 \
 | 
						|
	GOPROXY=$(shell go env GOPROXY) \
 | 
						|
		go test -v -p 1 -coverprofile=coverage.txt -covermode=count -timeout 1200s ./...
 | 
						|
 | 
						|
PHONY+=test/coverage
 | 
						|
test/coverage: test/unit
 | 
						|
	CGO_ENABLED=0 \
 | 
						|
	GOPROXY=$(shell go env GOPROXY) \
 | 
						|
		go tool cover -html=coverage.txt
 | 
						|
 | 
						|
# GOLANGCI-LINT
 | 
						|
# ==============================================================================
 | 
						|
PHONY+=golangci-lint
 | 
						|
golangci-lint:
 | 
						|
	golangci-lint run --concurrency=$(shell nproc)
 | 
						|
 | 
						|
# GOSEC
 | 
						|
# ==============================================================================
 | 
						|
PHONY+=gosec
 | 
						|
gosec:
 | 
						|
	gosec $(shell pwd)/...
 | 
						|
 | 
						|
# CONTAINER-IMAGE
 | 
						|
# ==============================================================================
 | 
						|
PHONY+=container-image/build
 | 
						|
container-image/build:
 | 
						|
	${CONTAINER_RUNTIME} build \
 | 
						|
		--build-arg VERSION=${VERSION} \
 | 
						|
		--file ./Dockerfile \
 | 
						|
		--no-cache \
 | 
						|
		--tag ${CONTAINER_IMAGE_FULLY_QUALIFIED} \
 | 
						|
		.
 | 
						|
 | 
						|
PHONY+=container-image/push
 | 
						|
container-image/push: container-image/build
 | 
						|
	${CONTAINER_RUNTIME} push ${CONTAINER_IMAGE_FULLY_QUALIFIED}
 | 
						|
 | 
						|
# CONTAINER STEPS - EXECUTABLE
 | 
						|
# ==============================================================================
 | 
						|
PHONY+=container-run/all
 | 
						|
container-run/all:
 | 
						|
	$(MAKE) container-run COMMAND=${@:container-run/%=%}
 | 
						|
 | 
						|
PHONY+=${EXECUTABLE_TARGETS:%=container-run/%}
 | 
						|
${EXECUTABLE_TARGETS:%=container-run/%}:
 | 
						|
	$(MAKE) container-run COMMAND=${@:container-run/%=%}
 | 
						|
 | 
						|
# CONTAINER STEPS - CLEAN
 | 
						|
# ==============================================================================
 | 
						|
PHONY+=container-run/clean
 | 
						|
container-run/clean:
 | 
						|
	$(MAKE) container-run COMMAND=${@:container-run/%=%}
 | 
						|
 | 
						|
# GENERAL CONTAINER COMMAND
 | 
						|
# ==============================================================================
 | 
						|
PHONY+=container-run
 | 
						|
container-run:
 | 
						|
	${CONTAINER_RUNTIME} run \
 | 
						|
		--env CONTAINER_IMAGE_VERSION=${CONTAINER_IMAGE_VERSION} \
 | 
						|
		--env VERSION=${VERSION} \
 | 
						|
		--net=host \
 | 
						|
		--rm \
 | 
						|
		--volume /tmp:/tmp \
 | 
						|
		--volume "${HOME}/go:/root/go" \
 | 
						|
		--volume "$(shell pwd):$(shell pwd)" \
 | 
						|
		--workdir "$(shell pwd)" \
 | 
						|
			${BUILD_IMAGE_FULLY_QUALIFIED} \
 | 
						|
				make ${COMMAND}
 | 
						|
 | 
						|
# PHONY
 | 
						|
# ==============================================================================
 | 
						|
# Declare the contents of the PHONY variable as phony. We keep that information
 | 
						|
# in a variable so we can use it in if_changed.
 | 
						|
.PHONY: ${PHONY}
 |