feat: support deploy worker with UI assets (#627)

This commit is contained in:
Dream Hunter
2025-04-12 15:37:34 +08:00
committed by GitHub
parent 32767176f0
commit 47e2cb56b4
22 changed files with 449 additions and 343 deletions
-1
View File
@@ -27,7 +27,6 @@ export default defineConfig({
}
},
themeConfig: {
logo: { src: '/logo.png', width: 24, height: 24 },
search: { provider: 'local' },
socialLinks: [
+1
View File
@@ -6,6 +6,7 @@ export const en = defineConfig({
description: 'CloudFlare Free sending and receiving of temporary domain name mailboxes',
themeConfig: {
outline: 'deep',
nav: nav(),
editLink: {
+2
View File
@@ -28,6 +28,7 @@ export const zh = defineConfig({
},
outline: {
level: 'deep',
label: '页面导航'
},
@@ -121,6 +122,7 @@ function sidebarGuide(): DefaultTheme.SidebarItem[] {
text: '通过 Github Actions 部署',
collapsed: true,
items: [
{ text: 'Github Actions 部署准备', link: 'actions/pre-requisite' },
{ text: 'D1 数据库', link: 'actions/d1' },
{ text: 'Github Actions 配置', link: 'actions/github-action' },
{ text: '配置邮件转发', link: 'email-routing.md' },
@@ -7,23 +7,50 @@
## 部署步骤
1. 在 GitHub fork 仓库
### Fork 仓库并启用 Actions
2. 打开仓库的 `Actions` 页面,找到 `Deploy Backend Production``Deploy Frontend`,点击 `enable workflow` 启用 `workflow`
- 在 GitHub fork 本仓库
- 打开仓库的 `Actions` 页面
- 找到 `Deploy Backend` 点击 `enable workflow` 启用 `workflow`
- 如果需要前后端分离部署, 找到`Deploy Frontend` 点击 `enable workflow` 启用 `workflow`
3. 然后在仓库页面 `Settings` -> `Secrets and variables` -> `Actions` -> `Repository secrets`, 添加以下 `secrets`:
### 配置 Secrets
- `CLOUDFLARE_ACCOUNT_ID`: Cloudflare 账户 ID, [参考文档](https://developers.cloudflare.com/workers/wrangler/ci-cd/#cloudflare-account-id)
- `CLOUDFLARE_API_TOKEN`: Cloudflare API Token, [参考文档](https://developers.cloudflare.com/workers/wrangler/ci-cd/#api-token)
- `BACKEND_TOML`: 后端配置文件,[参考此处](/zh/guide/cli/worker.html#修改-wrangler-toml-配置文件)
- `FRONTEND_ENV`: 前端配置文件,请复制 `frontend/.env.example` 的内容,[并参考此处修改](/zh/guide/cli/pages.html)
- `FRONTEND_NAME`: 你在 Cloudflare Pages 创建的项目名称,可通过 [用户界面](https://temp-mail-docs.awsl.uk/zh/guide/ui/pages.html) 或者 [命令行](https://temp-mail-docs.awsl.uk/zh/guide/cli/pages.html) 创建
- `FRONTEND_BRANCH`: (可选) pages 部署的分支,可不配置,默认 `production`
- `TG_FRONTEND_NAME`: (可选) 你在 Cloudflare Pages 创建的项目名称,同 `FRONTEND_NAME`,如果需要 Telegram Mini App 功能,请填写
- `DEBUG_MODE`: (可选) 是否开启调试模式,配置为 `true` 开启, 默认 worker 部署日志不会输出到 Github Actions 页面,开启后会输出
- `BACKEND_USE_MAIL_WASM_PARSER`: (可选) 是否使用 wasm 解析邮件,配置为 `true` 开启, 功能参考 [配置 worker 使用 wasm 解析邮件](/zh/guide/feature/mail_parser_wasm_worker)
然后在仓库页面 `Settings` -> `Secrets and variables` -> `Actions` -> `Repository secrets`, 添加以下 `secrets`:
4. 打开仓库的 `Actions` 页面,找到 `Deploy Backend Production``Deploy Frontend`,点击 `Run workflow` 选择分支手动部署
- 公共 `secrets`
| 名称 | 说明 |
| ----------------------- | --------------------------------------------------------------------------------------------------------------- |
| `CLOUDFLARE_ACCOUNT_ID` | Cloudflare 账户 ID, [参考文档](https://developers.cloudflare.com/workers/wrangler/ci-cd/#cloudflare-account-id) |
| `CLOUDFLARE_API_TOKEN` | Cloudflare API Token, [参考文档](https://developers.cloudflare.com/workers/wrangler/ci-cd/#api-token) |
- worker 后端 `secrets`
| 名称 | 说明 |
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| `BACKEND_TOML` | 后端配置文件,[参考此处](/zh/guide/cli/worker.html#修改-wrangler-toml-配置文件) |
| `DEBUG_MODE` | (可选) 是否开启调试模式,配置为 `true` 开启, 默认 worker 部署日志不会输出到 Github Actions 页面,开启后会输出 |
| `BACKEND_USE_MAIL_WASM_PARSER` | (可选) 是否使用 wasm 解析邮件,配置为 `true` 开启, 功能参考 [配置 worker 使用 wasm 解析邮件](/zh/guide/feature/mail_parser_wasm_worker) |
| `USE_WORKER_ASSETS` | (可选) 部署带有前端资源的 Worker, 配置为 `true` 开启 |
- pages 前端 `secrets`
> [!warning] 注意
> 如果选择部署带有前端资源的 Worker, 则无须配置这些 `secrets`
| 名称 | 说明 |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `FRONTEND_ENV` | 前端配置文件,请复制 `frontend/.env.example` 的内容,[并参考此处修改](/zh/guide/cli/pages.html) |
| `FRONTEND_NAME` | 你在 Cloudflare Pages 创建的项目名称,可通过 [用户界面](https://temp-mail-docs.awsl.uk/zh/guide/ui/pages.html) 或者 [命令行](https://temp-mail-docs.awsl.uk/zh/guide/cli/pages.html) 创建 |
| `FRONTEND_BRANCH` | (可选) pages 部署的分支,可不配置,默认 `production` |
| `TG_FRONTEND_NAME` | (可选) 你在 Cloudflare Pages 创建的项目名称,同 `FRONTEND_NAME`,如果需要 Telegram Mini App 功能,请填写 |
### 部署
- 打开仓库的 `Actions` 页面
- 找到 `Deploy Backend` 点击 `Run workflow` 选择分支手动部署
- 如果需要前后端分离部署, 找到 `Deploy Frontend`, 点击 `Run workflow` 选择分支手动部署
## 如何配置自动更新
@@ -0,0 +1,10 @@
# Gihub Actions 部署准备
## GitHub 账户
- 需要一个 GitHub 账户
- 良好的网络环境
## Fork 仓库
- 在 GitHub fork [本仓库](https://github.com/dreamhunter2333/cloudflare_temp_email.git)
+6 -3
View File
@@ -1,8 +1,11 @@
# Cloudflare Pages 前端
::: warning
下面种方式选择一种即可
:::
> [!warning] 注意
> 下面种方式选择一种即可
## 部署带有前端资源的 Worker
参考 [部署 Worker](/zh/guide/cli/worker#部署带有前端页面的-worker-可选)
## 前后端分离部署
+30 -1
View File
@@ -1,4 +1,4 @@
# Cloudflare workers 后端
# Cloudflare Worker 后端
## 初始化项目
@@ -36,6 +36,12 @@ compatibility_flags = [ "nodejs_compat" ]
# { pattern = "temp-email-api.xxxxx.xyz", custom_domain = true },
# ]
# 如果你想要部署带有前端资源的 worker, 你需要添加 assets 配置
# [assets]
# directory = "../frontend/dist/"
# binding = "ASSETS"
# run_worker_first = true
# 如果你想要使用定时任务清理邮件,取消下面的注释,并修改 cron 表达式
# [triggers]
# crons = [ "0 0 * * *" ]
@@ -86,6 +92,29 @@ database_id = "xxx" # D1 数据库 ID
# service = "auth-inbox"
```
## 部署带有前端页面的 worker(可选)
> [!NOTE]
> 如果不需要 [带有前端页面的 worker],可以跳过此步骤
> 参考之后部署前端文档,可以进行前后端分离部署
确认已构建前端资源到 `frontend/dist` 目录
```bash
cd frontend
pnpm install --no-frozen-lockfile
pnpm build:pages
```
`worker` 目录下的 `wrangler.toml` 文件中添加下面的配置
```toml
[assets]
directory = "../frontend/dist/"
binding = "ASSETS"
run_worker_first = true
```
## Telegram Bot 配置
> [!NOTE]
@@ -1,6 +1,6 @@
# 搭建 SMTP IMAP 代理服务
::: warning
::: warning 注意
如果你使用了 `resend`, 可直接使用 `resend``SMTP` 服务,不需要使用此服务
:::
@@ -1,6 +1,6 @@
# OAuth2 第三方登录
> [!WARNING]
> [!WARNING] 注意
> 第三方登录会自动使用用户邮箱注册账号(邮箱相同将视为同一账号)
>
> 此账号和注册的账号相同, 也可以通过忘记密码设置密码
+1 -1
View File
@@ -8,7 +8,7 @@
- [通过命令行部署](/zh/guide/cli/pre-requisite)
- [通过用户界面部署](/zh/guide/ui/d1)
- [通过Github Actions 部署](/zh/guide/actions/github-action)
- [通过Github Actions 部署](/zh/guide/actions/pre-requisite)
### 也可以参考网友提供的详细的小白教程