From d740092d0cca3579884a9a52da1803270b4b8902 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B8=D0=BC=D0=B8=D0=BD?= Date: Sun, 10 May 2026 17:10:45 +0000 Subject: [PATCH] fix(build): pass git info via Docker build args (unblock main pipeline) --- .gitlab-ci.yml | 9 +++++++++ ordinis-app/Dockerfile | 18 +++++++++++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 86fe4a7..291c36c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -211,9 +211,18 @@ build-docs: # to registry" на manifest push. # Когда Nexus blob storage стабилизируется, --no-cache можно убрать — # добавляет ~2 минуты per service на полную пересборку. + # Git info passed как build args чтобы Spring Boot build-info goal получил + # реальные значения (внутри Docker context .git/ исключён через .dockerignore, + # git-commit-id-maven-plugin не может прочесть). Backend Dockerfile'ы + # используют эти ARG'и в `mvn -Dgit.commit.id.abbrev=... -Dgit.branch=...`. + # Frontend / docs / migrations Dockerfile'ы их игнорируют (no-op в context'е). docker build --pull --no-cache -f "$DOCKERFILE" \ -t "$IMG:$IMAGE_TAG" -t "$IMG:latest" -t "$IMG:$CI_COMMIT_REF_SLUG" \ --build-arg BUILDKIT_INLINE_CACHE=1 \ + --build-arg GIT_COMMIT="${CI_COMMIT_SHORT_SHA:-unknown}" \ + --build-arg GIT_BRANCH="${CI_COMMIT_REF_NAME:-unknown}" \ + --build-arg GIT_TAG="${CI_COMMIT_TAG:-none}" \ + --build-arg GIT_TIME="${CI_COMMIT_TIMESTAMP:-unknown}" \ "$BUILD_CONTEXT" docker push "$IMG:$IMAGE_TAG" docker push "$IMG:latest" diff --git a/ordinis-app/Dockerfile b/ordinis-app/Dockerfile index 0391cf5..9e06718 100644 --- a/ordinis-app/Dockerfile +++ b/ordinis-app/Dockerfile @@ -9,9 +9,25 @@ # .dockerignore исключает frontend (admin-ui), bench, docs, target/, .git/, # IDE metadata — backend image остаётся компактным. FROM repo.nstart.cloud/library/maven:3.9.9-eclipse-temurin-21 AS build +# Git info из CI environment (`.gitlab-ci.yml` `--build-arg`) — нужен для +# Spring Boot build-info goal через ordinis-app/pom.xml. Внутри Docker +# context .git/ исключён (.dockerignore), поэтому git-commit-id-maven-plugin +# не может прочитать локально. Defaults в pom.xml gracefully fallback'ят +# если ARG'и не переданы (local docker build без ENV). +ARG GIT_COMMIT=unknown +ARG GIT_BRANCH=unknown +# GIT_TAG defaults to "none" (не пусто): Maven property substitution трактует +# empty value как null → Spring Boot build-info goal валится с +# "Additional property 'tag' is illegal as its value is null". +ARG GIT_TAG=none +ARG GIT_TIME=unknown WORKDIR /build COPY . ./ -RUN mvn -B -pl ordinis-app -am package -DskipTests +RUN mvn -B -pl ordinis-app -am package -DskipTests \ + -Dgit.commit.id.abbrev="$GIT_COMMIT" \ + -Dgit.branch="$GIT_BRANCH" \ + -Dgit.tags="$GIT_TAG" \ + -Dgit.commit.time="$GIT_TIME" FROM repo.nstart.cloud/library/eclipse-temurin:21-jre WORKDIR /app