add:增加action脚本

This commit is contained in:
lsy committed 2026-02-16 10:46:37 +08:00
1 parent 3bcc9ebb99
commit fa536d876e
5 files changed
+117 -19

No files matched your search

+30
View File
@@ -0,0 +1,30 @@
name: Deploy Worker
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oven-sh/setup-bun@v1
with:
bun-version: "1.3.9"
- name: Install dependencies
run: bun install
- name: Build admin
run: bun run --filter new-api-lite-admin build
- name: Apply D1 migrations (remote)
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: bunx wrangler d1 migrations apply DB --remote --config apps/worker/wrangler.toml
- name: Deploy worker
env:
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
run: bunx wrangler deploy --config apps/worker/wrangler.toml
+69 -19
View File
@@ -1,6 +1,7 @@
# new-api-lite
简易版 new-api:Cloudflare Workers + D1 后端,Vite 静态管理台。
管理台构建产物通过 Worker Static Assets 与 Worker 一起部署。
## 目录结构
@@ -75,12 +76,19 @@ bun run fix
## D1 数据库
在 `apps/worker/migrations/0001_init.sql` 定义表结构,使用 Wrangler 迁移:
在 `apps/worker/migrations/0001_init.sql` 定义表结构,使用 Wrangler 迁移。
本地开发使用本地数据库,云端部署使用 `--remote`:
```bash
bun run --filter new-api-lite-worker db:migrate
```
云端(Cloudflare D1)请使用:
```bash
bunx wrangler d1 migrations apply DB --remote
```
## 忘记管理员密码
管理员密码存储为哈希,可通过删除设置记录来重置,下一次登录会用输入的密码重新初始化:
@@ -89,36 +97,78 @@ bun run --filter new-api-lite-worker db:migrate
bunx wrangler d1 execute DB --command "DELETE FROM settings WHERE key = 'admin_password_hash';"
```
## 生产部署
## 云端部署(Cloudflare Workers + D1)
### 1) 准备 Cloudflare 资源
说明:
- 管理台静态资源来自 `apps/admin/dist`
- `/api/*` 与 `/v1/*` 会优先走 Worker 逻辑
- 部署顺序:先构建管理台,再部署 Worker
- 下述 `wrangler deploy` 与 `--remote` 均为云端部署/迁移(非本地模拟)
1. 创建 D1 数据库并回填 `apps/worker/wrangler.toml` 的 `database_id`:
### 1) 新建部署
1. 安装依赖:
```bash
bun install
```
2. 创建 D1 数据库并回填 `apps/worker/wrangler.toml` 的 `database_id`:
```bash
bunx wrangler d1 create new_api_lite
```
2. 设置 Worker 变量与密钥(如 CORS_ORIGIN):
3. 设置 Worker 变量与密钥(如 CORS_ORIGIN):
其他变量可继续放在 `apps/worker/wrangler.toml` 的 `[vars]` 中,`CORS_ORIGIN` 需指向管理台域名。
### 2) 执行生产迁移
```bash
bunx wrangler d1 migrations apply DB
```
### 3) 部署 Worker
```bash
bun run --filter new-api-lite-worker deploy
```
### 4) 构建并部署 Admin
4. 构建管理台并上传静态资源:
```bash
bun run --filter new-api-lite-admin build
```
将 `apps/admin/dist` 发布到 Cloudflare Pages 或任意静态托管;如需指定 API 基址,请在构建前设置 `VITE_API_BASE`(例如 `apps/admin/.env.production`)。
5. 执行远程迁移:
```bash
bunx wrangler d1 migrations apply DB --remote
```
6. 部署 Worker:
```bash
bun run --filter new-api-lite-worker deploy
```
### 2) 更新前端(仅管理台变更)
```bash
bun run --filter new-api-lite-admin build
bun run --filter new-api-lite-worker deploy
```
### 3) 更新后端(仅 Worker 变更)
```bash
bun run --filter new-api-lite-worker deploy
```
### 4) 数据库更新
1. 添加新的迁移文件到 `apps/worker/migrations/`。
2. 执行远程迁移:
```bash
bunx wrangler d1 migrations apply DB --remote
```
### 5) 自动部署(GitHub Actions)
工作流默认在 `main` 分支推送时触发,步骤为:安装依赖 → 构建管理台 → 部署 Worker。
需要在仓库 Secrets 中配置:
- `CLOUDFLARE_API_TOKEN`:具有 Workers 与 D1 权限的 API Token
- `CLOUDFLARE_ACCOUNT_ID`:Cloudflare 账户 ID(若 token 无法自动识别账户)
确保 `apps/worker/wrangler.toml` 中已填写 `database_id`。
+5
View File
@@ -11,3 +11,8 @@ PROXY_RETRY_DELAY_MS = "200"
binding = "DB"
database_name = "new_api_lite"
database_id = "00000000-0000-0000-0000-000000000000"
[assets]
directory = "../admin/dist"
not_found_handling = "single-page-application"
run_worker_first = ["/api/*", "/v1/*"]
+12
View File
@@ -6,6 +6,12 @@
- **[tooling]**: 修复 bun check 脚本名称(移除尾随空格)
- 类型: 微调(无方案包)
- 文件: package.json
- **[docs]**: 补充云端部署与本地迁移的区分说明
- 类型: 微调(无方案包)
- 文件: README.md
- **[ci]**: 自动部署加入远程 D1 迁移步骤
- 类型: 微调(无方案包)
- 文件: .github/workflows/deploy.yml
- **[admin-ui]**: 渠道创建移除 ID 字段并校验名称唯一
- 类型: 微调(无方案包)
- 文件: apps/admin/src/main.tsx:250-287, 664-829
@@ -55,6 +61,12 @@
- 类型: 微调(无方案包)
- 文件: apps/worker/src/routes/proxy.ts
## [0.4.2] - 2026-02-16
### 变更
- **[deployment]**: 管理台通过 Worker Static Assets 部署并补齐手动/自动部署流程
- 方案: [202602161013_worker-assets-deploy](archive/2026-02/202602161013_worker-assets-deploy/)
## [0.4.1] - 2026-02-15
### 变更
+1
View File
@@ -10,6 +10,7 @@
## 行为规范
- Vite 构建静态文件
- 构建产物 `apps/admin/dist` 由 Worker Static Assets 托管
- 使用 `hono/jsx/dom` + TSX 渲染管理台入口
- 入口文件为 `apps/admin/src/App.tsx`(`main.tsx` 已移除)
- 按 `core/`(类型/常量/API)、`features/`(业务视图 + 布局/登录)组织前端模块