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