fix(admin-ui): changelog build context — copy script + CI before_script

This commit is contained in:
Александр Зимин
2026-05-12 18:48:04 +00:00
parent 9cc079ba68
commit 5103ed6d9c
6 changed files with 66 additions and 11 deletions
@@ -0,0 +1,37 @@
#!/usr/bin/env node
/**
* Copy `docs/changelog.md` → `ordinis-admin-ui/src/changelog-public.md`.
*
* Why: public CHANGELOG лежит в `docs/` (single source of truth, читается
* mkdocs/Diplodoc для /docs/changelog.html). admin-ui WhatsNewButton тоже
* импортирует его через Vite `?raw`, но Docker build context = admin-ui/,
* `docs/` снаружи. Скрипт вызывается через `predev` / `prebuild` npm
* hooks — копирует файл в admin-ui/src/ перед start'ом vite.
*
* В CI копию делает `.gitlab-ci.yml` `docker-admin-ui:before_script:` —
* перед docker build файл уже в context'е, Dockerfile `COPY . .` подхватит.
*
* **Critical name choice:** `changelog-public.md`, не `changelog.md`. macOS
* по умолчанию case-insensitive filesystem (APFS / HFS+) — `changelog.md` ≡
* `CHANGELOG.md` ≡ existing internal CHANGELOG.md → overwrite. Suffix
* `-public` устраняет конфликт + явно показывает purpose. Plus файл живёт
* в `src/` (не root) чтобы Vite `?raw` ресолвил по relative path без `..`.
*
* `src/changelog-public.md` — generated, gitignored.
*/
import { copyFileSync, existsSync, mkdirSync } from 'node:fs'
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'
const __dirname = dirname(fileURLToPath(import.meta.url))
const SRC = resolve(__dirname, '..', '..', 'docs', 'changelog.md')
const DST = resolve(__dirname, '..', 'src', 'changelog-public.md')
if (!existsSync(SRC)) {
console.error(`copy-changelog: source missing ${SRC}`)
process.exit(0)
}
mkdirSync(dirname(DST), { recursive: true })
copyFileSync(SRC, DST)
console.log(`copy-changelog: ${SRC}${DST}`)