88 lines
2.0 KiB
Markdown
88 lines
2.0 KiB
Markdown
# 本地代码验证(Ubuntu / Linux)
|
||
|
||
> **只做一件事**:在本机确认代码能启动、单测通过、关键 HTTP 行为正确。
|
||
> **不做**:生产部署清单、浏览器手测、Agent 全量 E2E。
|
||
|
||
环境:Ubuntu 原生 + Docker(MySQL + Redis)+ Python 3.12 + 项目根 `.env`。
|
||
|
||
---
|
||
|
||
## 一键(推荐)
|
||
|
||
```bash
|
||
cd "$NEXUS_ROOT" # 例:~/桌面/Nexus
|
||
bash scripts/local_verify.sh
|
||
```
|
||
|
||
顺序:启动 Docker MySQL/Redis → uvicorn → smoke → `test_api.py` → ruff。
|
||
|
||
---
|
||
|
||
## 分步
|
||
|
||
**首次 — 依赖**
|
||
|
||
```bash
|
||
bash scripts/ensure_venv.sh
|
||
python3 docker/generate_env.py # 若无 docker/.env
|
||
python3 docker/sync_root_env.py # 生成根 .env
|
||
```
|
||
|
||
**启动**
|
||
|
||
```bash
|
||
bash scripts/start-dev.sh
|
||
```
|
||
|
||
**验证**
|
||
|
||
```bash
|
||
bash scripts/local_integration_smoke.sh
|
||
.venv/bin/python tests/test_api.py
|
||
```
|
||
|
||
| 项 | 预期 |
|
||
|----|------|
|
||
| `tests/test_security_unit.py` + retry | 全部 passed |
|
||
| `GET /health` | 200 |
|
||
| `GET /api/servers/` | 401(JWT) |
|
||
| `tests/test_api.py` | 26/26 passed |
|
||
|
||
---
|
||
|
||
## Docker 权限
|
||
|
||
若 `docker` 报 permission denied,脚本会自动 `sg docker`。或:
|
||
|
||
```bash
|
||
sudo usermod -aG docker "$USER" # 重新登录后免 sg
|
||
```
|
||
|
||
Redis 检测:优先 `redis-cli`;未安装时用 `docker exec nexus-redis-1 redis-cli ping`(无需 apt 装 redis-tools)。
|
||
|
||
---
|
||
|
||
## 无 `.env`
|
||
|
||
先 `bash scripts/start-dev.sh`,浏览器打开 `http://127.0.0.1:8600/app/install.html` 完成向导,或:
|
||
|
||
```bash
|
||
NEXUS_TEST_ADMIN_PASSWORD='你的密码' python3 scripts/seed_local_admin.py
|
||
```
|
||
|
||
---
|
||
|
||
## 脚本索引
|
||
|
||
| 脚本 | 作用 |
|
||
|------|------|
|
||
| `scripts/start-dev.sh` | Docker mysql+redis + uvicorn |
|
||
| `scripts/local_verify.sh` | 一键启动 + 全量本地验证 |
|
||
| `scripts/local_integration_smoke.sh` | smoke(不启动服务) |
|
||
| `scripts/ensure_venv.sh` | 创建 `.venv` |
|
||
| `scripts/check_mysql.py` | MySQL 连通与表检查 |
|
||
|
||
上线验收见 [`production-verification-checklist.md`](production-verification-checklist.md)。
|
||
|
||
路径 SSOT:[`linux-dev-paths.md`](linux-dev-paths.md)
|