fix(version): detect CI build via CI_COMMIT_SHORT_SHA, not process.env.CI

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.
This commit is contained in:
Zimin A.N.
2026-05-11 15:29:58 +03:00
parent f0392af0e3
commit b6af155da2
+6 -4
View File
@@ -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 ??
(() => {