Files
mdm-ordinis/ordinis-admin-ui/Dockerfile
T
Zimin A.N. e62633d903 fix(version): read CI_COMMIT_TAG as source of truth, package.json as fallback
Previously: vite read package.json.version only, requiring manual bump
before each tag pipeline (manual sync ломалось — MR !44 пример костыля).

Now: vite reads CI_COMMIT_TAG (passed via Dockerfile ARG GIT_TAG from
.gitlab-ci.yml .docker_base) → strips 'v' prefix → exposes как __APP_TAG__.
'none' sentinel filtered → empty string → fallback к package.json.

VersionBadge priority chain:
  1. serverTag (что прод RUNS, через /api/v1/version)
  2. clientTag (что build'илось на tag pipeline)
  3. v${clientVersion} (package.json fallback floor для local / branch)

Dockerfile: add ARG GIT_TAG=none, ENV CI_COMMIT_TAG=$GIT_TAG (mirrors
существующий pattern с GIT_COMMIT → CI_COMMIT_SHORT_SHA).

Revert package.json 1.3.1 → 1.2.0 (manual bump из MR !44). Версия теперь
follows tag, не наоборот.
2026-05-11 14:19:50 +03:00

39 lines
2.1 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
FROM repo.nstart.cloud/library/node:22-alpine AS build
# Build identity для VersionBadge / UpdateBanner. Внутри Docker build context
# нет .git/ (BUILD_CONTEXT=ordinis-admin-ui/), vite execSync падает →
# fallback "unknown" / package.json. CI передаёт реальные значения через
# --build-arg (см. .gitlab-ci.yml publish_script .docker_base).
#
# GIT_TAG — "none" sentinel когда CI_COMMIT_TAG не set (branch pipeline).
# Фильтруем "none" → пустая строка чтобы vite.config.ts видел falsy и
# fallback'ил к package.json.
ARG GIT_COMMIT=unknown
ARG GIT_TAG=none
ENV CI_COMMIT_SHORT_SHA=$GIT_COMMIT
ENV CI_COMMIT_TAG=$GIT_TAG
WORKDIR /app
# .npmrc нужен ДО pnpm install, иначе @nstart/* резолвятся в public npm и 404.
# pnpm-lock.yaml — для воспроизводимости (frozen lockfile в CI).
COPY package.json pnpm-lock.yaml .npmrc ./
# Pin pnpm@9.15.4 — exact version для reproducibility + lockfile compat
# (pnpm-lock.yaml lockfileVersion: '9.0').
# - corepack может hang в CI на integrity-check / non-TTY prompts. npm
# install --silent надёжнее.
# - v10+ блокирует postinstall scripts ("Run pnpm approve-builds..."), в CI
# нет интерактивного prompt'а → exit 1. v9 keeps старое поведение.
RUN npm install -g --silent pnpm@9.15.4
RUN --mount=type=cache,target=/root/.local/share/pnpm/store pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
FROM repo.nstart.cloud/library/nginx:1.27-alpine
COPY --from=build /app/dist /usr/share/nginx/html
# Шаблон обрабатывается официальным entrypoint nginx-image:
# /docker-entrypoint.d/20-envsubst-on-templates.sh пробегает по
# /etc/nginx/templates/*.template и envsubst'ит ENV vars в /etc/nginx/conf.d/.
COPY nginx.conf /etc/nginx/templates/default.conf.template
ENV NGINX_ENVSUBST_TEMPLATE_DIR=/etc/nginx/templates \
NGINX_ENVSUBST_TEMPLATE_SUFFIX=.template \
NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx/conf.d
EXPOSE 80