From b6af155da256a395db6757c911e1e3e3c50cac9a Mon Sep 17 00:00:00 2001 From: "Zimin A.N." Date: Mon, 11 May 2026 15:29:58 +0300 Subject: [PATCH] fix(version): detect CI build via CI_COMMIT_SHORT_SHA, not process.env.CI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Staging показывал badge 'local · {commit}' вместо ожидаемого 'dev'. Причина: Dockerfile не пробрасывает process.env.CI через ARG. Vite видит только что было передано через --build-arg в .gitlab-ci.yml (GIT_COMMIT/GIT_TAG → CI_COMMIT_SHORT_SHA/CI_COMMIT_TAG). Fix: использовать CI_COMMIT_SHORT_SHA как primary CI detect — он всегда проходит через Dockerfile ARG (см. ordinis-admin-ui/Dockerfile). Это canonical GitLab CI signal — always set в любом pipeline. process.env.CI остаётся как secondary check для других CI систем (local CI runners, GitHub Actions если когда-то) где CI_COMMIT_SHORT_SHA не set но CI=true. --- ordinis-admin-ui/vite.config.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ordinis-admin-ui/vite.config.ts b/ordinis-admin-ui/vite.config.ts index 89108bb..dd179ef 100644 --- a/ordinis-admin-ui/vite.config.ts +++ b/ordinis-admin-ui/vite.config.ts @@ -28,10 +28,12 @@ const APP_VERSION: string = JSON.parse( // --build-arg GIT_TAG="${CI_COMMIT_TAG:-none}"). Filter → пустая строка. const RAW_TAG = process.env.CI_COMMIT_TAG ?? '' const APP_TAG: string = RAW_TAG === 'none' ? '' : RAW_TAG.replace(/^v/, '') -// GitLab CI ставит CI=true. Используем для discriminate "CI branch build" -// (нет tag'а, но есть pipeline) vs "local pnpm dev" (нет ни того ни другого). -// VersionBadge показывает 'dev' для первого, 'local' для второго. -const APP_CI: boolean = process.env.CI === 'true' +// Distinguish "CI branch build" (badge → 'dev') vs "local pnpm dev" (→ 'local'). +// Canonical CI signal — наличие CI_COMMIT_SHORT_SHA (GitLab CI always sets). +// process.env.CI тоже check'аем но он НЕ пробрасывается через Docker ARG'и +// (см. ordinis-admin-ui/Dockerfile), поэтому SHORT_SHA — primary detect. +const APP_CI: boolean = + Boolean(process.env.CI_COMMIT_SHORT_SHA) || process.env.CI === 'true' const APP_COMMIT: string = process.env.CI_COMMIT_SHORT_SHA ?? (() => {