From 2b179deb76e4ece65230e4b404e9cca5173f4c3b Mon Sep 17 00:00:00 2001 From: Moritz Clasmeier Date: Fri, 10 Apr 2026 10:11:43 +0200 Subject: [PATCH 1/3] Don't duplicate roxie building -- reuse Makefile target in Dockerfile. The VERSION->ROXIE_VERSION renaming was necessary due to a name collision: In the used Go builder image VERSION is already used (set to the Go version). --- .dockerignore | 1 - Dockerfile | 18 ++++++++++-------- Makefile | 14 +++++++------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/.dockerignore b/.dockerignore index ff85bf93..30442dc0 100644 --- a/.dockerignore +++ b/.dockerignore @@ -33,7 +33,6 @@ vendor/ tests/ # Configuration -Makefile .envrc *.yaml *.yml diff --git a/Dockerfile b/Dockerfile index a295b277..425d3c08 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,14 +21,16 @@ RUN go mod download COPY . . # Build roxie binary with version info and cross-compilation support -ARG VERSION=0.1 -ARG GIT_COMMIT=unknown -ARG BUILD_DATE=unknown -RUN echo "Building for ${TARGETOS}/${TARGETARCH}" && \ - CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} go build \ - -ldflags "-w -s -X main.version=${VERSION} -X main.gitCommit=${GIT_COMMIT} -X main.buildDate=${BUILD_DATE}" \ - -o roxie \ - ./cmd +ARG ROXIE_VERSION +ARG BUILD_DATE +ARG GIT_COMMIT +RUN CGO_ENABLED=0 \ + GOOS=${TARGETOS} \ + GOARCH=${TARGETARCH} \ + ROXIE_VERSION=${ROXIE_VERSION} \ + BUILD_DATE=${BUILD_DATE} \ + GIT_COMMIT=${GIT_COMMIT} \ + make build # Download gcloud SDK in builder stage to avoid UBI filesystem restrictions # Latest version including checksums can be found at: diff --git a/Makefile b/Makefile index 9df1d5f6..a7588b95 100644 --- a/Makefile +++ b/Makefile @@ -29,9 +29,9 @@ GIT_COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown") # .. or ..--[-dirty] # # This will also become the tag of the docker images. -VERSION := $(shell git describe --tags --always --dirty | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+-[0-9]+-[a-z0-9]+(-dirty)?$$)/\1/') +ROXIE_VERSION ?= $(shell git describe --tags --always --dirty | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+-[0-9]+-[a-z0-9]+(-dirty)?$$)/\1/') BUILD_DATE := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ') -LDFLAGS := -X main.version=$(VERSION) -X main.gitCommit=$(GIT_COMMIT) -X main.buildDate=$(BUILD_DATE) +LDFLAGS := -X main.version=$(ROXIE_VERSION) -X main.gitCommit=$(GIT_COMMIT) -X main.buildDate=$(BUILD_DATE) .PHONY: get-build-date get-build-date: @@ -43,7 +43,7 @@ get-commit-hash: .PHONY: version version: - @echo $(VERSION) + @echo $(ROXIE_VERSION) # Build targets .PHONY: build @@ -176,7 +176,7 @@ IMAGE_DEFAULT_REGISTRY := localhost IMAGE_REGISTRY := $(shell if [ -z "$(IMAGE_REGISTRY)" ]; then echo $(IMAGE_DEFAULT_REGISTRY); else echo $(IMAGE_REGISTRY); fi) IMAGE_NAME := roxie IMAGE_LATEST_TAG := $(IMAGE_REGISTRY)/$(IMAGE_NAME):latest -IMAGE_VERSION_TAG := $(IMAGE_REGISTRY)/$(IMAGE_NAME):$(VERSION) +IMAGE_VERSION_TAG := $(IMAGE_REGISTRY)/$(IMAGE_NAME):$(ROXIE_VERSION) CONTAINER_RUNTIME ?= $(shell command -v podman 2>/dev/null || command -v docker 2>/dev/null) # Multi-architecture support @@ -191,7 +191,7 @@ docker-build: ## Build roxie Docker image for current platform exit 1; \ fi $(CONTAINER_RUNTIME) build \ - --build-arg VERSION=$(VERSION) \ + --build-arg ROXIE_VERSION=$(ROXIE_VERSION) \ --build-arg GIT_COMMIT=$(GIT_COMMIT) \ --build-arg BUILD_DATE=$(BUILD_DATE) \ -t $(IMAGE_LATEST_TAG) \ @@ -211,7 +211,7 @@ docker-build-arm64: ## Build roxie Docker image for arm64 fi $(CONTAINER_RUNTIME) build \ --platform linux/arm64 \ - --build-arg VERSION=$(VERSION) \ + --build-arg ROXIE_VERSION=$(ROXIE_VERSION) \ --build-arg GIT_COMMIT=$(GIT_COMMIT) \ --build-arg BUILD_DATE=$(BUILD_DATE) \ -t $(IMAGE_LATEST_TAG)-arm64 \ @@ -230,7 +230,7 @@ docker-build-amd64: ## Build roxie Docker image for amd64 fi $(CONTAINER_RUNTIME) build \ --platform linux/amd64 \ - --build-arg VERSION=$(VERSION) \ + --build-arg ROXIE_VERSION=$(ROXIE_VERSION) \ --build-arg GIT_COMMIT=$(GIT_COMMIT) \ --build-arg BUILD_DATE=$(BUILD_DATE) \ -t $(IMAGE_LATEST_TAG)-amd64 \ From 7857f69007a419fd53310b54ea22cf8b61225933 Mon Sep 17 00:00:00 2001 From: Moritz Clasmeier Date: Fri, 10 Apr 2026 15:41:02 +0200 Subject: [PATCH 2/3] Use ROXIE_VERSION in GHA flow --- .github/workflows/docker-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 448a9feb..92a3c24a 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -70,7 +70,7 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | - VERSION=${{ steps.build-meta.outputs.version }} + ROXIE_VERSION=${{ steps.build-meta.outputs.version }} GIT_COMMIT=${{ steps.build-meta.outputs.git_commit }} BUILD_DATE=${{ steps.build-meta.outputs.build_date }} cache-from: | From 3c90e75030867e1a67a061621520b4fd51356a8a Mon Sep 17 00:00:00 2001 From: Moritz Clasmeier Date: Sun, 12 Apr 2026 21:37:40 +0200 Subject: [PATCH 3/3] Initialize GIT_COMMIT and BUILD_DATE with ?= instead of := --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index a7588b95..c0eea669 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ BUILD_DIR := . BINARY := $(BUILD_DIR)/$(BINARY_NAME) # Version information -GIT_COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown") +GIT_COMMIT ?= $(shell git rev-parse HEAD 2>/dev/null || echo "unknown") # Convention is that the git tags are of the form # v..--[-dirty] # or v.. @@ -30,7 +30,7 @@ GIT_COMMIT := $(shell git rev-parse HEAD 2>/dev/null || echo "unknown") # # This will also become the tag of the docker images. ROXIE_VERSION ?= $(shell git describe --tags --always --dirty | sed -E 's/^v([0-9]+\.[0-9]+\.[0-9]+-[0-9]+-[a-z0-9]+(-dirty)?$$)/\1/') -BUILD_DATE := $(shell date -u '+%Y-%m-%dT%H:%M:%SZ') +BUILD_DATE ?= $(shell date -u '+%Y-%m-%dT%H:%M:%SZ') LDFLAGS := -X main.version=$(ROXIE_VERSION) -X main.gitCommit=$(GIT_COMMIT) -X main.buildDate=$(BUILD_DATE) .PHONY: get-build-date