Appearance
CLI 初始化(dev-setup 与各子命令)
文档状态:部署运维方案尚未成熟
本分区文档描述的是开发期部署与运维方式(手动分步启动、开发期脚本),尚未提供面向生产的一键部署方案——当前不具备守护进程管理、TLS、备份、升级等生产级能力,生产部署请谨慎参考。项目后续将提供成熟的一键部署方式,届时本文档将整体更新。
管理 CLI
noj-core/scripts/noj.ts 是统一的命令行入口(Cliffy 框架),取代了早期的 seed.ts / build-packages.ts 脚本。所有管理操作通过子命令完成:
bash
cd noj-core
deno task db:migrate # 数据库迁移(= noj db migrate)
deno task init:system # 系统基础数据:root + RBAC + 镜像白名单 + 分类(= noj init system)
deno task bootstrap:admin # 管理员引导(= noj bootstrap admin)
deno task problems:build # 构建统一题目包(= noj problems build)
deno task problems:import # 批量导入统一题目包(= noj problems import)
deno task dev-setup # 开发环境一键初始化(= noj dev-setup)deno task noj --help(或任一子命令 --help)可查看完整用法。
dev-setup 做什么
dev-setup 按顺序执行:
db migrate— 数据库迁移init system— root 用户、RBAC 预置角色、评测镜像白名单、示例分类bootstrap admin— 管理员引导problems build— 从data/problems-src/<id>/构建统一题目包到data/packages/problems import— 扫描data/packages/*.zip走统一导入(幂等 upsert)
最后额外填充 dev 专用数据:E2E 守卫测试用户(NOJ_RUN_E2E=1 时)。
dev-setup 面向开发、测试和首次初始化。生产环境请按需执行
db:migrate→init:system→bootstrap:admin→problems:build→problems:import(正式统一题目包),不要执行 dev-setup 的 dev 数据部分。
管理员初始化
bootstrap admin 支持环境变量或 CLI 参数:
bash
# 环境变量(推荐)
ADMIN_EMAIL=admin@example.com ADMIN_PASS='...' deno task bootstrap:admin
# 或 CLI 参数
deno task bootstrap:admin -- --email admin@example.com --password '...'- 设置了
ADMIN_EMAIL/ADMIN_PASS:创建或提升对应管理员,强制首次登录后修改密码。 - 未设置:在无任何可登录管理员时创建临时引导管理员(
admin@noj.local,随机密码打印到终端)。
样例题同步
data/problems-src/ 中的 1001–1003 样例题通过 problems:build + problems:import 同步(manifest 带固定 number,id 一律由服务端生成 UUID;重复导入按 (type, number) 幂等更新,不会产生重复题目)。
正式出题建议:在 Web 管理界面创建题目,或打包统一题目包(见"出题人"文档) 后通过管理界面上传 / problems:import 导入。