# Deno Deploy

Deno Deploy 是 Deno 的托管部署平台，也支持把 region 自托管到自己的基础设施。新平台控制台位于 `console.deno.com`，数据模型是 organization → app → revision → timeline；它不是旧 Deploy Classic 的原地升级。

## 创建与部署

可以连接 GitHub 让平台执行集成构建，也可以使用 Deno 内置 CLI：

```bash
deno deploy
deno deploy --prod
deno deploy logs --org my-org --app my-app
```

首次命令会通过系统 keyring 管理认证。自动化环境使用平台认可的 token 流程，不把 deploy token 写进命令历史。

| 新平台能力 | 截至 2026-08-03 的官方说明 |
| --- | --- |
| 环境 | Production、Development、Build contexts 分离 |
| 数据 | PostgreSQL 或 Deno KV，按 timeline 创建逻辑隔离 |
| 调度 | `Deno.cron()`，运行记录进入日志与 traces |
| 可观测性 | dashboard 提供 logs、traces 与 metrics |
| 缓存 | CDN caching 与 Web Cache API |
| 区域 | 托管 US/EU，另可自托管 region；发布前核对最新列表 |
| Queue | 新 Deploy 当前不支持旧 Deno KV Queue API |

## 发布前准备

1. 服务通过 `Deno.serve` 或所选框架公开 HTTP 入口。
2. `deno.json` 中有可复现的 install/build/start 约定。
3. `deno.lock` 已提交，CI 已通过。
4. 密钥只声明变量名，不写入仓库。
5. 对 KV、数据库、cron 等能力分别确认一致性与配额；使用 queue 的 Classic 项目先设计替代方案。

## 上线验证

```text
GET /health          → 200 + 稳定小响应
无密钥请求           → 明确失败，不泄露配置
超时或取消           → 中止上游请求
重复写入             → 幂等或可检测
回滚                 → 前一产物可以重新激活
```

检查构建日志与请求日志是否含 token、Authorization header 或用户输入。对外部 API 使用超时；对可重试写入使用幂等键。

## Revision 与回滚

每个 timeline 维护 revision 历史，active revision 承接流量。发布前验证非生产 timeline，再切换生产；回滚是重新激活上一 revision，不等于自动回滚数据库 migration。

## Deno KV

`Deno.openKv()` 在本地与托管环境的后端和持久化语义不同。键使用结构化数组；事务依赖 versionstamp。开发测试优先使用内存或隔离数据库，生产前核对当前 Deploy 配额和一致性说明。

继续阅读：[数据库、Cron 与 Timelines](/docs/deploy/data-and-cron) 和 [Classic 迁移](/docs/deploy/classic-migration)。

官方参考：[About Deno Deploy](https://docs.deno.com/deploy/)、[`deno deploy` CLI](https://docs.deno.com/runtime/reference/cli/deploy/)、[Timelines](https://docs.deno.com/deploy/reference/timelines/)。
