# Xboard 开发文档(开发环境 / 本地测试 / 运行 / 编译) 本文面向仓库维护者与二次开发者,覆盖本项目在本地和容器中的完整开发流程。 ## 1. 项目现状与边界 - 后端框架:Laravel 12(`laravel/framework`)+ Octane(Swoole)+ Horizon。 - 运行依赖:数据库(SQLite / MySQL / PostgreSQL)+ Redis。 - 前端资产:当前仓库已包含编译产物,主要位于: - `theme/Xboard/assets` - `theme/v2board/assets` - `public/assets/admin` - `package.json` 仅含 `chokidar` 依赖,主要用于 Octane `--watch` 开发体验,不是完整前端工程。 ## 2. 开发环境要求 ## 2.1 必需依赖 - Git - PHP `8.2+` - Composer `2.x` - Redis `7+` - 数据库三选一: - SQLite(最快) - MySQL `5.7+` - PostgreSQL ## 2.2 推荐依赖(开发体验) - Docker + Docker Compose(推荐) - Node.js `18+`(仅在使用 `php artisan octane:start --watch` 时需要) ## 2.3 操作系统建议 - 推荐 Linux / WSL2。 - `compose.sample.yaml` 使用 `network_mode: host`,在非 Linux 环境可能需要改为端口映射(如 `7001:7001`)。 ## 3. Docker 开发模式(推荐) ## 3.1 初始化 ```bash git clone -b compose --depth 1 https://github.com/cedar2025/Xboard cd Xboard cp compose.sample.yaml compose.yaml ``` ## 3.2 安装(首次) 推荐使用 SQLite + 内置 Redis 的快速安装: ```bash docker compose run -it --rm \ -e ENABLE_SQLITE=true \ -e ENABLE_REDIS=true \ -e ADMIN_ACCOUNT=admin@demo.com \ web php artisan xboard:install ``` 安装完成后请记录: - 管理员账号/密码(安装命令输出) - 后台路径(安装命令输出中的 `secure_path`) ## 3.3 启动与停止 ```bash docker compose up -d docker compose ps docker compose logs -f web docker compose logs -f horizon ``` 停止: ```bash docker compose down ``` ## 3.4 访问地址 - 用户前台:`http://:7001/` - 管理后台:`http://:7001/` 说明:`secure_path` 默认不是固定字符串,而是安装后生成并可在后台配置修改。 ## 4. 宿主机本地开发(非 Docker) ## 4.1 安装依赖 ```bash composer install cp .env.example .env ``` 如果你计划使用 SQLite,可先准备文件: ```bash mkdir -p .docker/.data touch .docker/.data/database.sqlite ``` ## 4.2 首次安装 ```bash php artisan xboard:install ``` 安装向导会交互配置: - 数据库类型(SQLite / MySQL / PostgreSQL) - Redis 连接(安装阶段会强校验可连通) - 管理员账号 ## 4.3 启动服务(开发三进程) 建议至少开 3 个终端: 1. Web 服务(Octane) ```bash php artisan octane:start --host=0.0.0.0 --port=7001 --watch ``` 2. 队列消费(Horizon) ```bash php artisan horizon ``` 3. 定时任务(开发态) ```bash php artisan schedule:work ``` 说明: - 生产环境通常由 `cron` 调 `schedule:run`,开发环境直接 `schedule:work` 更直观。 - 若不使用 `--watch`,可不安装 Node.js。 ## 4.4 权限问题(Linux) ```bash chmod -R 775 storage bootstrap/cache .docker/.data ``` ## 5. 本地测试与质量检查 ## 5.1 当前仓库事实 - 当前仓库未包含 `tests/` 目录。 - 当前仓库未包含 `phpunit.xml` / `phpunit.xml.dist`。 因此默认没有可执行的项目内单元测试套件,建议先补齐测试基建再启用 CI 强校验。 ## 5.2 建议的本地检查基线 ```bash php artisan about php artisan migrate:status php artisan route:list vendor/bin/phpstan analyse --memory-limit=1G ``` 如后续补充测试用例后,再执行: ```bash timeout 60s php artisan test ``` > 约定:自动化执行测试时,单条任务建议设置 60s 超时,避免阻塞流水线。 ## 6. 运行与调试要点 ## 6.1 调度与队列健康 - 定时任务心跳来源:`App\Console\Kernel::schedule` 中写入缓存键 `SCHEDULE_LAST_CHECK_AT`。 - Horizon 状态可在后台系统状态页查看。 若后台提示异常,先检查: ```bash php artisan schedule:list php artisan horizon:status ``` ## 6.2 关键日志位置 - 应用日志:`storage/logs` - Docker 运行日志:`docker compose logs -f web|horizon` ## 7. 编译 / 构建说明 ## 7.1 应用层“编译”边界 - 本仓库不包含完整的后台/前台前端源码工程。 - 默认是消费已编译好的静态资源,不存在常规 `npm run build` 的全量前端构建链。 ## 7.2 Docker 镜像构建 CI 使用 `.github/workflows/docker-publish.yml` 进行多架构构建并推送镜像。 本地可执行: ```bash docker build \ --build-arg CACHEBUST=$(date +%s) \ --build-arg REPO_URL=https://github.com/cedar2025/Xboard \ --build-arg BRANCH_NAME=master \ -t xboard:dev . ``` 重要说明: - 当前 `Dockerfile` 在构建时会 `git clone` 指定仓库分支,不直接打包你本地未提交改动。 - 若目标是“本地改动实时调试”,优先使用 Docker Compose 挂载源码运行,而非用该 `Dockerfile` 打镜像。 ## 8. 升级、回滚与危险脚本 常用命令: ```bash php artisan xboard:update php artisan xboard:rollback ``` 注意事项: - `update.sh` 包含 `git reset --hard origin/master`,会覆盖本地改动,不建议在开发分支使用。 - `xboard:update` / `xboard:install` 内部包含插件目录恢复逻辑,可能回退 `plugins/` 下被 Git 跟踪且非新增的修改。 ## 9. 建议开发流程(最小闭环) 1. 建立分支并完成代码改动。 2. 启动 `octane + horizon + schedule:work` 做手工联调。 3. 运行静态检查(`phpstan`)和基础 smoke 检查(`about` / `migrate:status`)。 4. 确认后台路径、队列、定时任务均正常后再提交。