github.com/timo-reymann/yal@v0.0.0-20240419173834-5d47db58f9d1/Makefile (about) 1 .PHONY: help 2 3 SHELL := /bin/bash 4 VERSION=$(shell git describe --tags `git rev-list --tags --max-count=1`) 5 NOW=$(shell date +'%y-%m-%d_%H:%M:%S') 6 COMMIT_REF=$(shell git rev-parse --short HEAD) 7 BUILD_ARGS=-tags netgo -ldflags "-s -w -X github.com/timo-reymann/yal/pkg/buildinfo.GitSha=$(COMMIT_REF) -X github.com/timo-reymann/yal/pkg/buildinfo.Version=$(VERSION) -X github.com/timo-reymann/yal/pkg/buildinfo.BuildTime=$(NOW)" 8 BIN_PREFIX="dist/yal_" 9 10 all: help 11 12 clean: ## Cleanup artifacts 13 @rm -rf dist/ 14 15 help: ## Display this help page 16 @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[33m%-30s\033[0m %s\n", $$1, $$2}' 17 18 coverage: ## Run tests and measure coverage 19 @CGO_ENABLED=0 go test -covermode=count -coverprofile=/tmp/count.out -v ./... 20 21 test-coverage-report: coverage ## Run test and display coverage report in browser 22 @go tool cover -html=/tmp/count.out 23 24 save-coverage-report: coverage ## Save coverage report to coverage.html 25 @go tool cover -html=/tmp/count.out -o coverage.html 26 27 create-dist: ## Create dist folder if not already existent 28 @mkdir -p dist/ 29 30 build-linux: create-dist ## Build binaries for linux 31 @CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o $(BIN_PREFIX)linux-amd64 $(BUILD_ARGS) 32 @CGO_ENABLED=0 GOOS=linux GOARCH=386 go build -o $(BIN_PREFIX)linux-i386 $(BUILD_ARGS) 33 @CGO_ENABLED=0 GOOS=linux GOARCH=arm go build -o $(BIN_PREFIX)linux-arm $(BUILD_ARGS) 34 @CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o $(BIN_PREFIX)linux-arm64 $(BUILD_ARGS) 35 36 build-windows: create-dist ## Build binaries for windows 37 @CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o $(BIN_PREFIX)windows-amd64.exe $(BUILD_ARGS) 38 @CGO_ENABLED=0 GOOS=windows GOARCH=386 go build -o $(BIN_PREFIX)windows-i386.exe $(BUILD_ARGS) 39 @CGO_ENABLED=0 GOOS=windows GOARCH=arm go build -o $(BIN_PREFIX)windows-arm.exe $(BUILD_ARGS) 40 41 build-darwin: create-dist ## Build binaries for macOS 42 @CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o $(BIN_PREFIX)darwin-amd64 $(BUILD_ARGS) 43 @CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o $(BIN_PREFIX)darwin-arm64 $(BUILD_ARGS) 44 45 build-freebsd: create-dist ## Build binaries for FreeBSD 46 @CGO_ENABLED=0 GOOS=freebsd GOARCH=amd64 go build -o $(BIN_PREFIX)freebsd-amd64 $(BUILD_ARGS) 47 @CGO_ENABLED=0 GOOS=freebsd GOARCH=386 go build -o $(BIN_PREFIX)freebsd-i386 $(BUILD_ARGS) 48 @CGO_ENABLED=0 GOOS=freebsd GOARCH=arm64 go build -o $(BIN_PREFIX)freebsd-arm64 $(BUILD_ARGS) 49 @CGO_ENABLED=0 GOOS=freebsd GOARCH=arm go build -o $(BIN_PREFIX)freebsd-arm $(BUILD_ARGS) 50 51 build-openbsd: create-dist ## Build binaries for OpenBSD 52 @CGO_ENABLED=0 GOOS=openbsd GOARCH=amd64 go build -o $(BIN_PREFIX)openbsd-amd64 $(BUILD_ARGS) 53 @CGO_ENABLED=0 GOOS=openbsd GOARCH=386 go build -o $(BIN_PREFIX)openbsd-i386 $(BUILD_ARGS) 54 55 build-docker-minimal: ## Build docker image based on the built linux builds in the dist folder for use as a standalone CLI in the container 56 @docker buildx build --tag timoreymann/yal:latest \ 57 --platform linux/amd64,linux/arm/v7,linux/arm64 \ 58 --build-arg BUILD_TIME="$(NOW)" \ 59 --build-arg BUILD_VERSION="$(VERSION)" \ 60 --build-arg BUILD_COMMIT_REF="$(COMMIT_REF)" \ 61 --push . 62 @docker buildx build --tag timoreymann/yal:$(VERSION) \ 63 --platform linux/amd64,linux/arm/v7,linux/arm64 \ 64 --build-arg BUILD_TIME="$(NOW)" \ 65 --build-arg BUILD_VERSION="$(VERSION)" \ 66 --build-arg BUILD_COMMIT_REF="$(COMMIT_REF)" \ 67 --push . 68 69 build-docker-ci: ## Build docker image based on the built linux builds in the dist folder for use with the common CI providers 70 @docker buildx build --tag timoreymann/yal:ci \ 71 --file Dockerfile.ci \ 72 --platform linux/amd64,linux/arm/v7,linux/arm64 \ 73 --push . 74 @docker buildx build --tag timoreymann/yal:$(VERSION)-ci \ 75 --file Dockerfile.ci \ 76 --platform linux/amd64,linux/arm/v7,linux/arm64 \ 77 --push . 78 79 create-checksums: ## Create checksums for binaries 80 @find ./dist -type f -exec sh -c 'sha256sum {} | cut -d " " -f 1 > {}.sha256' {} \; 81 82 build: build-linux build-darwin build-windows build-freebsd build-openbsd ## Build binaries for all platform 83 84 build-docker: build-docker-ci build-docker-minimal ## Build all docker image variants