From 4e11b81d1c8a6de094ecd9cd5b08cd12e5480ee2 Mon Sep 17 00:00:00 2001 From: Radoslav Dimitrov Date: Thu, 16 Oct 2025 19:41:41 +0300 Subject: [PATCH] Pass ldflags to the Dockerfile (#681) ## Motivation and Context The following fixes an issue where the ldflags were not passed to the Dockerfile, so the binary cannot populate its version-related variables accordingly ## How Has This Been Tested? ## Breaking Changes ## Types of changes - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Documentation update ## Checklist - [ ] I have read the [MCP Documentation](https://modelcontextprotocol.io) - [ ] My code follows the repository's style guidelines - [ ] New and existing tests pass locally - [ ] I have added appropriate error handling - [ ] I have added or updated documentation as needed ## Additional context Signed-off-by: Radoslav Dimitrov --- .github/workflows/deploy-staging.yml | 8 ++++++++ .github/workflows/release.yml | 10 +++++++++- Dockerfile | 9 ++++++++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml index 906463f..09116da 100644 --- a/.github/workflows/deploy-staging.yml +++ b/.github/workflows/deploy-staging.yml @@ -34,6 +34,10 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Get build timestamp + id: build-time + run: echo "timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> $GITHUB_OUTPUT + - name: Extract metadata id: meta uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f @@ -54,6 +58,10 @@ jobs: labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max + build-args: | + VERSION=${{ steps.meta.outputs.version }} + GIT_COMMIT=${{ github.sha }} + BUILD_TIME=${{ steps.build-time.outputs.timestamp }} deploy-staging: name: Deploy to Staging diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cf8d6ce..d172f24 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -56,6 +56,10 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Get build timestamp + id: build-time + run: echo "timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> $GITHUB_OUTPUT + - name: Extract metadata id: meta uses: docker/metadata-action@c1e51972afc2121e065aed6d45c65596fe445f3f @@ -75,4 +79,8 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha - cache-to: type=gha,mode=max \ No newline at end of file + cache-to: type=gha,mode=max + build-args: | + VERSION=${{ steps.meta.outputs.version }} + GIT_COMMIT=${{ github.sha }} + BUILD_TIME=${{ steps.build-time.outputs.timestamp }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 32caa73..bee434f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,7 +10,14 @@ RUN go mod download COPY . . ARG GO_BUILD_TAGS -RUN go build ${GO_BUILD_TAGS:+-tags="$GO_BUILD_TAGS"} -o /build/registry ./cmd/registry +ARG VERSION=dev +ARG GIT_COMMIT=unknown +ARG BUILD_TIME=unknown + +RUN go build \ + ${GO_BUILD_TAGS:+-tags="$GO_BUILD_TAGS"} \ + -ldflags="-X main.Version=${VERSION} -X main.GitCommit=${GIT_COMMIT} -X main.BuildTime=${BUILD_TIME}" \ + -o /build/registry ./cmd/registry FROM alpine:latest WORKDIR /app