10 KiB
title, type, tags, related, updated
| title | type | tags | related | updated | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| sched — публикация на GitHub (private-dev-public-publish, CI, Pages, синк dev→pub) | concept |
|
|
2026-08-27 |
sched → GitHub: публикация и синк (runbook)
⚙️ СЛУЖЕБНЫЙ РАНБУК — только для администратора проекта
.admin. Применять/выполнять шаги может только.admin(оператор проекта admin). Другим проектам/агентам — читать по запросу, не выполнять. Из проекта не выносить: не копировать в другие вики, не пересказывать, не публиковать. Нужен деплой или прод-операция по этому ранбуку — поставить задачу админу (.admin) и написать письмо. Админ выполняет, остальные верифицируют.
Публикация sched (шедулер, OSS, MIT) на GitHub по паттерну private-dev-public-publish: разработка в приватном Gitea, наружу — курируемая копия. Первый паблиш — 2026-08-27 (task:1149, по «го» vitya).
Топология
| Роль | Папка | Origin | Мета |
|---|---|---|---|
| dev | ~/projects/sched |
git.kzntsv.site/victor/sched (Gitea) |
.wiki/.tasks/.agents внутри |
| pub | ~/projects/sched-upstream |
github.com/schedjs/schedjs (main) |
нет |
Артефакты
- Репо pub:
schedjs/schedjs(PUBLIC, MIT, 12 topics: cron/scheduler/job-queue/task-scheduler/background-jobs/self-hosted/nodejs/typescript/queue/devtools/mcp/docker; description+homepagehttps://schedjs.github.io/sched). - Сайт доков:
https://schedjs.github.io/schedjs/(Pages, workflowci.yml→ docs job; llms.txt/llms-full.txt). - CI:
.github/workflows/ci.yml— test (unit, без БД) + docs (Pages). Конфиг юнит-сьюта:vitest.ci.config.ts. - Доки:
docs/(Docus 5.12.3 на Nuxt), dist =docs/dist(трекается, Pages-сборка). - Storage-тесты с БД: локально (docker: mongo 27017, pg 5433
postgres:test, mysql 3308root:test, mariadb 3307root:test).
Синк dev → pub (курируемая копия)
- Список файлов:
git -C ~/projects/sched ls-filesминус исключения:^\.wiki/|^\.tasks/|^\.agents/|^AGENTS\.md$|^CLAUDE\.md$|^branding/pora-|^pngtree-|^327274997_|^cat-clock-|^MIGRATION\.md$. Untracked в dev (canva/istock/logo.ai/logo.png/logo.svg/черновики) НЕ копируются. - Копировать в
~/projects/sched-upstream(mkdir -p + cp по списку). - Выбелить (dev-приватное → публичное), файлы в pub-копии:
.yarnrc.yml→npmRegistryServer: "https://registry.npmjs.org", без токена;docs/nuxt.config.ts+docs/modules/sched-links.ts→ дефолтыgithub.com/schedjs/schedjs,registry.npmjs.org,ghcr.io/schedjs(env-оверрайд сохранён);apps/daemon/Dockerfile→ секретid=npm_token(не verdaccio_token), комменты;docker-compose.dev.yml→ убрать NPM_REGISTRY/NPM_TOKEN (публичный npm);CHANGELOG.md→ «→ npm» вместо verdaccio, docker-образ без registry.kzntsv;scripts/publish-check.mjs+publish-check.test.mjs→ghcr.io/schedjs/sched-daemon;examples/*/generate.ps1, README, test → убрать «verdaccio subpath export».
- dist:
rm -rf docs/dist && cp -r dev/docs/dist+ скраб остатковgit.kzntsv(в т.ч. JSON-экранированных\u002F).docs/dist/logo.svgНЕ коммитить (user: svg не едет; источник в корне dev untracked). - Проверка:
grep -rnE 'git\.kzntsv|verdaccio|vds\.kzntsv|registry\.kzntsv|VERDACCIO'→ 0; мета → 0; один чистый коммит + push main.
CI (workflow ci.yml)
- test (unit): checkout → setup-node 24 → corepack enable →
yarn install --immutable→yarn workspaces foreach --all -pt --exclude docs run build→yarn tsc --noEmit→yarn vitest run --config vitest.ci.config.ts(исключаетpackages/storage-*/test/**— им нужны живые БД). - docs: на push в main: install →
yarn workspace docs build→ upload-pages-artifact (docs/dist) → deploy-pages. Pages включён (gh api repos/schedjs/schedjs/pages -X POST -f build_type=workflow). - Ручной запуск:
workflow_dispatch.
Verify (после синка/деплоя)
https://schedjs.github.io/schedjs/→ meta-refresh на/schedjs/docs/introduction(200), CSS (/schedjs/_nuxt/…), favicon (/schedjs/favicon.ico200), лого (full URLhttps://schedjs.github.io/schedjs/logo.png200), llms.txt 200.- Футер: 1 иконка GitHub (не 2).
gh run listзелёный;gh repo viewtopics/description.
Rollback
- Репо: содержимое pub = курируемая копия; откат = revert коммита pub (история чистая).
- Pages: перезапуск предыдущего успешного deploy-pages (Pages → последний деплой) или push реверта.
- CI-конфиг: фиксы в dev → синк → push.
Gotchas
app.baseURL: '/schedjs/'обязателен (Pages-subpath), но Docus игнорирует его для двух ссылок: index meta-refresh (url=/docs/introduction) и favicon (href="/favicon.ico") → пост-фикс вscripts/docs-dist.mjs(запускается после generate; срабатывает и в CI).- NuxtImg двойная база лого: header logo
'/logo.png'→/_ipx/_/schedjs/logo.png(404, _ipx не генерится статически). Фикс: полный URL вheader.logo.light/dark(https://schedjs.github.io/schedjs/logo.png) — ipx пропускает внешние. - Футер: 2 GitHub-иконки — Docus сам подставляет github из git-remote + explicit
socials.github. Убрать explicit (pub remote = github.com → 1 иконка). В dev-сборке (Gitea remote) футер покажет Gitea-ссылку — при синке dist скрабить. docs/dist/logo.svgрегенерируется изdocs/public/logo.svgпри каждой сборке (2026-08-27: вынесен в корень dev, untracked) — не коммитить в pub.- CI: dist нет в git (gitignored) →
buildдоtsc(cross-package types через dist). - corepack vs setup-node
cache: yarn— кэш дёргает системный yarn 1 → падает на packageManager. Кэш не использовать. - mariadb:11 первый старт дольше health-окна GH Actions (76s+) — healthcheck не вешать; ждать готовности node-скриптом на драйверах (pg/mysql2/mongodb) или юнит-only CI.
- yarn.lock в Berry-формате без URL; может быть устаревшим (nodemailer) —
yarn installв dev, синк. До npm-паблиша@sched/mcp@npm:^0.4.0резолвится в workspace (transparent) — install с npmjs работает. - Процесс-раннер в тестах: спавнит с чистым env (без PATH) →
['node', …]падает ENOENT на Linux CI → в real-spawn тестахprocess.execPath.
Осталось (на 2026-08-27)
-
Чистый старт репо 2026-08-27:
schedjs/schedудалён → созданschedjs/schedjsс ОДНИМ root-коммитом (нет истории доко-сборки). MIGRATION.md исключён из паблик-сета (история миграций — dev-only). Все URL/бейджи/baseURL переведены наschedjs.github.io/schedjs/+github.com/schedjs/schedjs. Синк:git checkout --orphan+ копия + выбеливание + один коммит + push. -
npm-паблишСДЕЛАНО 2026-08-27: скоуп@schedjs/*, НЕ@sched(имяschedзанято на npmjs юзером-профилем → оргу@schedсоздать нельзя;@schedjsсвободен и совпадает с GitHub-org). Опубликованы все 9 пакетов:@schedjs/{core,admin-api,cli,mcp,storage-mongo,storage-mysql,storage-postgres,ui,daemon}. В dev-манифестах/доках/README тоже переименовано@sched/*→@schedjs/*(коммит 137f78b). npm-токен —npm/admin-npm-token(pass), owner org schedjs, bypass 2FA; старый apilki-токен удалён из pass. -
docker-образ daemon: НЕ паблишен (publish-check ругается на
registry.kzntsv.site/sched-daemon); цель —ghcr.io/schedjs/sched-daemon(как в выбеленных publish-check/Dockerfile). -
task:720
pkg-repo-metadata— сделано (repository/homepage/bugs/author добавлены во все 9 манифестов в волне переименования); -
Context7-сабмит (Pages живы); README npm-бейдж после паблиша — README во всех пакетах уже с бейджами;
-
schedjs.com — фаза SaaS (CNAME → Pages), обновить llms.domain и header.logo URL.
Связи
concepts/runbooks-index.md— индекс (строка sched).- Shared wiki (mappa): Docus-подводные камни —
docus-github-pages-pitfalls(тема создана из этого опыта). - Скил
private-dev-public-publish(глобальный) — общая топология двух репо.