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:
@@ -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 ??
|
||||
(() => {
|
||||
|
||||
Reference in New Issue
Block a user